导致MsBuild“无法解决依赖性错误”的原因是什么?

时间:2011-04-13 03:54:00

标签: visual-studio-2010 msbuild continuous-integration

我正在尝试为持续集成设置一些构建脚本,我发现了一些奇怪的东西。

我的解决方案从Visual Studio 2010编译得很好,但是当我使用MSBuild从命令行构建完全相同的东西时失败并出现错误。

这是我从命令行构建中得到的错误。

  

C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.WinFX.targets(269,9):
  错误MC1000:未知的构建错误,
  '无法解析对程序集的依赖性'Microsoft.Windows.Design.Extensibility,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a',因为它尚未预加载。使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关组件。   [C:\ Dev \ Market Watch \ src \ Console \ MarketWatch.Console \ Rbnz.MarketWatch.Console.csproj]

我已经查看了所有源代码,以查看对{​​{1}}的引用,但根本没有找到任何内容。我还检查了我们从这个项目中引用的所有二进制文件,包括一些DevExpress库。

我的MSBuild命令行如下所示:

Microsoft.Windows.Design.Extensibility

我是否应该在MsBuild命令行中包含一些内容,以使命令行构建与Visual Studio运行的内容完全相同?

更新14/4

  • 尽管从Visual Studio命令提示符运行构建脚本,但我收到了这些错误。

3 个答案:

答案 0 :(得分:38)

我希望你解决了这个问题,但是为了将来的参考:

我遇到了同样的问题,它来自DevExpress'.design'程序集。实际上你不应该引用你项目中的那些。删除对以“.design”结尾的DevExpress程序集的所有引用,它应该可以工作。

答案 1 :(得分:0)

您应该初始化路径以查找程序集,工具等。在调用msbuild之前调用 vcvarsall.bat

call "%ProgramFiles%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64

或者打开VS2010命令行控制台并从中调用脚本。这两种行为都有同样的效果。

编辑:我无法理解一件事 - google因为你的问题说你以错误的方式使用Reflection,并且描述了一种可能的解决方案here 。我是对的吗?

答案 2 :(得分:0)

我最近遇到了同样的问题。

我们的VSTS-BuildAgent上引发了错误。 在遵循Devexpress网站的所有建议(包括项目升级)之后,错误仍然存​​在。

老实说,我们正在混合WinForms和WPF,以便从Winforms顺利迁移到WPF,所以基本上不是日常问题。

无论如何,我能够通过再次添加所有需要的 WPF-Project 引用来解决这个问题,即使它们都已在Start-Project中引用,即Winforms。

在此移动之后,BuildAgent能够继承Build。