MSBuild强制执行HintPath验证

时间:2012-10-15 02:52:09

标签: msbuild

我经常看到汇编引用有错误的HintPath时的情况,这可能会导致奇怪的随机故障。

例如,您有错误的HintPath,但您的GAC中有相应的程序集。 这意味着项目将在您的计算机上编译正常,但在其他计算机上将失败。

就我而言,反之亦然,即使在CI服务器上,GAC中也有一个库,因此无法通过持续集成检测到此问题。

我正在寻找类似自定义MSBuild任务的东西,它将验证所有HintPath并导致构建失败,如果它们中的任何一个是错误的。

1 个答案:

答案 0 :(得分:0)

如果您希望在提示路径无效的情况下使构建失败,为什么不明确引用某些内容?这是我公司的SOP,因为它拥有相同库的许多版本。

例如:

    <Reference Include="C:\Path\To\Library\MyReference.dll">
      <Private>False</Private>
    </Reference>

或者,如果你想动态地引用基于某个路径的库,你可以设置一些msbuild属性,比如说,指向你的库文件夹的“ExternalLibs”(如果你在源代码管理中保留libs等)。然后,您可以通过命令行设置该属性(当您调用msbuild时),或者为每个用户在其.user文件中覆盖一些默认值。

    <Reference Include="$(ExternalLibs)\MyReference.dll">
      <Private>False</Private>
    </Reference>

此解决方案非常灵活。

相关问题