2012-10-15 71 views
5

我经常看到程序集引用有错误的HintPath的情况,这可能导致奇怪的随机故障。MSBuild强制HintPath验证

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

在我的情况下,反之亦然,即使在CI服务器上也有一个GAC库,所以通过持续集成无法检测到此问题。

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

回答

0

如果您想在构建提示路径无效时失败,为什么不直接引用某些内容?由于拥有大量相同库的版本,这是我公司的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> 

该解决方案非常灵活。