ResolvedReference ResolveReferenceForPath (string filename, ITaskItem reference, AssemblyName aname,
string error_message, SearchPath spath, bool specific_version)
{
- AssemblyName found_aname = GetAssemblyNameFromFile (filename);
- if (found_aname == null) {
+ AssemblyName found_aname;
+ if (!TryGetAssemblyNameFromFile (filename, out found_aname)) {
if (error_message != null)
log.LogMessage (MessageImportance.Low, error_message);
return null;
{
TargetFrameworkAssemblies gac_asm = new TargetFrameworkAssemblies (directory);
foreach (string file in Directory.GetFiles (directory, "*.dll")) {
- AssemblyName aname = GetAssemblyNameFromFile (file);
- if (aname != null)
+ AssemblyName aname;
+ if (TryGetAssemblyNameFromFile (file, out aname))
gac_asm.NameToAssemblyNameCache [aname.Name] =
new KeyValuePair<AssemblyName, string> (aname, file);
}
SearchPath.HintPath, specific_version);
}
- public AssemblyName GetAssemblyNameFromFile (string filename)
+ public bool TryGetAssemblyNameFromFile (string filename, out AssemblyName aname)
{
- AssemblyName aname = null;
+ aname = null;
filename = Path.GetFullPath (filename);
try {
aname = AssemblyName.GetAssemblyName (filename);
filename);
}
- return aname;
+ return aname != null;
}
bool TryGetAssemblyNameFromFullName (string full_name, out AssemblyName aname)
resolved = assembly_resolver.ResolveGacReference (item, specific_version);
} else if (String.Compare (spath, "{RawFileName}") == 0) {
//FIXME: identify assembly names, as extract the name, and try with that?
- AssemblyName aname = assembly_resolver.GetAssemblyNameFromFile (item.ItemSpec);
- if (aname != null)
+ AssemblyName aname;
+ if (assembly_resolver.TryGetAssemblyNameFromFile (item.ItemSpec, out aname))
resolved = assembly_resolver.GetResolvedReference (item, item.ItemSpec, aname, true,
SearchPath.RawFileName);
} else if (String.Compare (spath, "{CandidateAssemblyFiles}") == 0) {
LogWithPrecedingNewLine (MessageImportance.Low, "Primary Reference from AssemblyFiles {0}", item.ItemSpec);
string copy_local;
- AssemblyName aname = assembly_resolver.GetAssemblyNameFromFile (item.ItemSpec);
- if (aname == null) {
+ AssemblyName aname;
+ if (!assembly_resolver.TryGetAssemblyNameFromFile (item.ItemSpec, out aname)) {
Log.LogWarning ("Reference '{0}' not resolved", item.ItemSpec);
assembly_resolver.LogSearchLoggerMessages (MessageImportance.Normal);
continue;