2012-01-05 30 views
4

我們在解決方案中使用moles 0.94進行某些測試。然而,每次被先編譯時間,構建服務器將引發一些警告:無法解析構建服務器上的Moles dll的警告

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (1360): Could not resolve this reference. 
Could not locate the assembly "XXX.Moles, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL". 
Check to make sure the assembly exists on disk. 
If this reference is required by your code, you may get compilation errors. 

我的理解是,在構建服務器將嘗試開始建立之前解決該測試項目的所有引用,並如果它無法在molesassembly文件夾下找到moles dll(因爲它第一次是空的),它會生成類似上面的警告。

但是,當msbuild開始構建這個測試項目時,將會生成痣組件並將其複製到moleassemblies文件夾中,因此它不會變成錯誤。

總之,這是第一次構建會部分成功,下一次構建將完全成功。

我們試圖在構建服務器上不會有任何警告。有沒有什麼辦法可以消除構建服務器上的這種警告?

回答

3

我們已將所有第三方程序集存儲在項目根文件夾中的「裝配」文件夾中。我們任何項目中使用的所有第三方組件均從此位置引用。 Assemblies文件夾包含在TFS中。

看起來好像你是從輸出文件夾而不是一些常見的(Assemblies)文件夾引用XXX.Moles程序集。嘗試更新您的引用以使用Assemblies文件夾中的第三方庫而不是測試項目的輸出文件夾。

編輯:嘗試添加檢查,如果XXX.Moles裝配到存在參考標籤如:

<Reference Condition="Exists('..\molesassemblies\XXX.Moles.dll')" Include="XXX.Moles.dll"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\molesassemblies\XXX.Moles.dll</HintPath> 
</Reference> 
+0

我相信geekysteven在談到自動生成的痣組件,這是在構建過程中創建的,但經過ResolveReferences目標出現在MSBuild中,因此是Build Warning。 – 2012-01-06 03:53:39

+0

尼克是對的,我們不想檢入該DLL。痣組件是在構建服務器上自動生成的。這就是爲什麼生成服務器第一次無法檢測到DLL,所以它會丟失警告,但不會出現錯誤。 – geekysteven 2012-01-06 10:02:18

+0

我更新了我的答案 – Ludwo 2012-01-07 13:27:02

相關問題