【问题标题】:Why does environment variable BUILD_NUMBER interfere with .NET references during build?为什么环境变量 BUILD_NUMBER 在构建过程中会干扰 .NET 引用?
【发布时间】:2018-11-17 09:32:04
【问题描述】:

我从命令行调用 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。

引用被配置为本地复制,因此我在 Project1 的 bin 文件夹以及 Project2 的 bin 文件夹中获得了 log4net DLL。

但是,当我从 Jenkins 触发构建时,我总是会错过辅助引用,即在 Project2 的 bin 文件夹中,我找到了 Project1 的 DLL,但没有找到 log4net——尽管 log4net 存在于 Project1 的 bin 文件夹中。

我能够将原因追溯到 Jenkins 自动设置的环境变量 BUILD_NUMBER(例如 10)的存在。我在控制台窗口中进行了测试:如果它在那里,那么问题就如所描述的那样出现。如果不存在,所有 DLL 都在我期望的位置。

我该如何继续?欢迎提出任何建议!

提前致谢!

莱因哈德

【问题讨论】:

    标签: .net jenkins msbuild


    【解决方案1】:

    抱歉打扰了,问题是我自己造成的,就是这样:

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

    经验教训 ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2019-09-25
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多