为什么环境变量BUILD_NUMBER在构建期间会干扰.NET引用?

时间:2018-06-07 12:52:05

标签: .net jenkins msbuild

我从命令行调用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都是我期望的。

我该如何处理?欢迎任何建议!

提前致谢!

莱因哈德

1 个答案:

答案 0 :(得分:0)

对于这次干扰我很抱歉,我自己也引起了这个问题,就像那样:

我为Project1创建了一个post-build事件挂钩,只有在设置了环境变量BUILD_NUMBER时才执行一些二进制保护。完成后,MSBuild在Project1的ResolveAssemblyReferences步骤中失败,因为它无法发现受保护程序集中的引用。

经验教训;)