2012-10-15 31 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> 

該解決方案非常靈活。