2010-08-26 76 views
1

我一直在成功使用CC.Net一段時間,但現在我有一個問題。我爲CC添加了新的解決方案。它在VS2008中編譯得很好,但在CC中失敗。主要原因是 - 解決方案中的項目以錯誤的順序構建,不考慮依賴關係。 CC只是嘗試按照它們存儲在光盤上的順序(按字母順序)構建它們。 例如,在解決方案中存在projct Proj1和Proj2,Proj1參考Proj2。在CCNET Proj1之前構建Proj2並引發錯誤「CSC:錯誤CS0006:無法找到元數據文件'D:\ xxx \ Proj2 \ bin \ Debug \ Proj2.dll'」。 我知道這可能發生在使用devenv構建解決方案時,但我使用MSBuild。 以下代碼負責建設:克魯斯控制.NET忽略項目依賴關係

<exec> 
    <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable> 
    <baseDirectory>code\src</baseDirectory> 
    <buildArgs>/p:Configuration=Debug /t:Rebuild PM.sln</buildArgs> 
    <buildTimeoutSeconds>1200</buildTimeoutSeconds> 
</exec> 

我在做什麼錯?

+1

你確定引用實際上是在項目上,而不是在編譯的程序集上? – 2010-08-27 15:49:11

回答

1

錯誤Metadata file could not be found: 當它發生在我身上時,這是因爲在該位置有一個名爲proj1.exe的文件,本應該不存在。因此,當它使用proj1.exe作爲參考(而不是proj1.dll)時,proj1.exe對本地System.EnterpriseServices.dll的引用失敗。 proj1.exe參考System.EnterpriseServices.dll,其中引用System.EnterpriseServices.Wrapper.dll這發生在我身上。 proj1.exe不應該包含在構建中,但有人已經根據我們的團隊約定命名了單元測試應用程序項目。

因此,我建議檢查項目文件的引用(卸載項目和編輯項目在VS2010或打開一個文本或XML編輯每個項目文件),以確保它們不ProjectReferenceReference。還可以嘗試在buildArgs列表中使用/v:d進行構建,以便獲得更詳細的構建日誌,該日誌將向您顯示文件的解析位置以及順序。一個'成功'解決的不同引用可能會嘗試加載x.dll,直接在本地引用您的D:\xxx\Proj2\bin\Debug\Proj2.dll但失敗。