我正在使用MSBuild任务中的 Mono.Cecil,但在解决程序集的方式上遇到了问题。它正在选择.NET版本的Prism而不是 Silverlight。.NET 版本的 Prism 不包含Microsoft.Practices.Prism.Regions.Behaviors.TabControlRegionSyncBehavior
,因此我们无法解析该类型。
我正在对中间输出执行任务,因此引用的程序集不在该文件夹中。程序集的搜索路径在 MSBuild 脚本中设置为 ReferencePath。
Mono.Cecil 在此函数中进行基于名称的匹配:
AssemblyDefinition SearchDirectory (AssemblyNameReference name, IEnumerable<string> directories, ReaderParameters parameters)
{
var extensions = new [] { ".exe", ".dll" };
foreach (var directory in directories) {
foreach (var extension in extensions) {
string file = Path.Combine (directory, name.Name + extension);
if (File.Exists (file))
return GetAssembly (file, parameters);
}
}
return null;
}
有没有办法让它比较运行时(Silverlight 与 .NET)?有没有其他方法可以解决这个问题?让它使用元数据版本是否明智?