我从命令行调用MSBuild:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" /t:clean,build /p:configuration="Release" /p:platform="Any CPU" MySolution.sln
该解决方案包含多个项目和nuget包引用。例如。 Project1通过nuget引用log4net。 Project2引用了Project1。
引用被配置为copy-local,因此我在Project1的bin文件夹和Project2的bin文件夹中获取了log4net DLL。
然而,当我从Jenkins触发构建时,我总是错过辅助引用,即在Project2的bin文件夹中,我找到Project1的DLL而不是log4net - 尽管log1net存在于Project1的bin文件夹中。
我能够跟踪由Jenkins自动设置的环境变量BUILD_NUMBER(例如10)的存在的原因。我在控制台窗口中进行了测试:如果它在那里,那么问题就会出现。如果没有,那么所有的DLL都是我期望的。
我该如何处理?欢迎任何建议!
提前致谢!
莱因哈德
答案 0 :(得分:0)
对于这次干扰我很抱歉,我自己也引起了这个问题,就像那样:
我为Project1创建了一个post-build事件挂钩,只有在设置了环境变量BUILD_NUMBER时才执行一些二进制保护。完成后,MSBuild在Project1的ResolveAssemblyReferences步骤中失败,因为它无法发现受保护程序集中的引用。
经验教训;)