我经常看到程序集引用有错误的 HintPath 的情况,这可能会导致奇怪的随机故障。
例如,您有错误的 HintPath,但您的 GAC 中有相应的程序集。这意味着该项目将在您的机器上编译正常,但在其他机器上会失败。
在我的情况下,反之亦然,即使在 CI 服务器上,GAC 中也有一个库,因此持续集成无法检测到此问题。
我正在寻找类似自定义 MSBuild 任务的东西,它将验证所有 HintPaths 并在其中任何一个错误时导致构建失败。
我经常看到程序集引用有错误的 HintPath 的情况,这可能会导致奇怪的随机故障。
例如,您有错误的 HintPath,但您的 GAC 中有相应的程序集。这意味着该项目将在您的机器上编译正常,但在其他机器上会失败。
在我的情况下,反之亦然,即使在 CI 服务器上,GAC 中也有一个库,因此持续集成无法检测到此问题。
我正在寻找类似自定义 MSBuild 任务的东西,它将验证所有 HintPaths 并在其中任何一个错误时导致构建失败。
如果您想在提示路径无效的情况下使构建失败,为什么不直接引用一些东西呢?这是我公司的 SOP,因为同一库有很多版本。
例如:
<Reference Include="C:\Path\To\Library\MyReference.dll">
<Private>False</Private>
</Reference>
或者,如果您想动态地基于某个路径引用库,您可以设置一些 msbuild 属性,例如指向您的库文件夹的“ExternalLibs”(如果您将库保存在源代码管理等中)。然后,您可以通过命令行设置该属性(当您调用 msbuild 时)或为其提供一些默认值,例如,每个用户可以在其 .user 文件中覆盖该默认值。
<Reference Include="$(ExternalLibs)\MyReference.dll">
<Private>False</Private>
</Reference>
这个解决方案非常灵活。