“ReflectionOnlyAssemblyResolve事件”导致Visual Studio构建问题

12
我有一个针对.NET Framework 3.5的Visual Studio 2010项目。这个项目可以在Visual Studio中构建成功,但是当我尝试从命令行或TeamCity编译它时,会出现以下构建错误:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFX.targets(269,9): error MC1000: 未知构建错误,'由于没有预加载,无法解析对程序集'Microsoft.Windows.Design.Extensibility, Version = 4.0.0.0, Culture=neutral, PublicKey Token=b03f5f7f11d50a3a'的依赖项。在使用ReflectionOnly APIs时,必须预先加载或通过ReflectionOnlyAssemblyResolve事件按需加载依赖程序集。' [C:\Work\MyProject\MyProject.sln]

链接器似乎抱怨了Microsoft.Windows.Design.Extensibility.dll,但是该项目并不依赖于此库。

2021年了,问题仍然存在。 - Evgeny Gorbovoy
1个回答

21

编译项目中的XAML时出现了问题,它无法找到程序集。请忽略消息中关于ReflectionOnlyAssemblyResolve事件的提示,那只是为了帮助解决问题。真正的问题是它根本找不到程序集。

这是可以预料的,Microsoft.Windows.Design.Extensibility是一个Visual Studio程序集,存储在Common7\IDE\PublicAssemblies文件夹中。只有当该文件夹在探测路径中时,才能找到它;如果您从构建工具运行msbuild.exe,则肯定找不到它。

不确定该如何推荐,您将不得不找出依赖项来自哪里。这可能应该从.xaml文件内容开始搜索程序集名称。还要验证是否在从Visual Studio命令提示符运行msbuild.exe时重现了该问题。


2
看起来依赖关系来自第三方库。我尝试从您建议的位置添加对库的引用,它运行良好。谢谢。 - Amine Kerkeni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接