[英]Visual Studio: Build order random?
我有一個包含239個項目的解決方案。 我目前遇到以下問題:
當我在解決方案上執行“全部重建”后,完成完全清理(刪除輸出目錄):
17>------ Rebuild All started: Project: AAA, Configuration: Debug x86 ------
18>------ Rebuild All started: Project: BBB, Configuration: Debug x86 ------
18>CSC : error CS0006: Metadata file 'E:\Dev\Trunk\Debug\x86\AAA.dll' could not be found
17> XmsCommon -> E:\Dev\Trunk\Debug\x86\AAA.dll
我了解以下內容:
我不明白的
請注意:我不知道這是否是由於最近的更改(項目/視覺工作室/ ...)造成的,因為這使我花了2年的時間來研究該解決方案,而且這是我第一次獲得認可這個問題一次又一次。
所以問題是:
編輯評論后,這里是一些附加信息:
在BBB.csproj
,我有以下參考資料:
<ProjectReference Include="..\..\..\..\SomeOtherFolder\AAA\AAA.csproj">
<Project>{6241076B-05B3-4D5D-AFA9-46D41E1CEC3A}</Project>
<Name>AAA</Name>
<Private>False</Private>
</ProjectReference>
編輯2我不知道這是否直接相關,但是當檢查項目依賴項時,我發現BBB
依賴於CCC
(但是AAA
卻沒有顯示。我想知道是否有依賴項指定,它基本上忽略了所有來自參考的信息?如果我嘗試刪除CCC
依賴項, This dependency was added by the project system and cannot be removed
收到一條消息: This dependency was added by the project system and cannot be removed
編輯3
我進行了一次有趣的發現:實際上,我在EDIT 2中遇到的錯誤是因為在兩個項目之間創建引用時已添加了此依賴關系。
由於未知的原因,似乎此依賴關系尚未創建供此處參考。 如果刪除項目引用,然后將引用再次添加到同一項目,則現在具有此依賴項(無法刪除)。 我找不到此“依賴關系”的存儲位置。關於如何“解決”整個解決方案的任何想法?
從您的帖子中,您說過"I've no explicit "Project Dependency" specify(Right click on solution -> Project Dependencies)"
這意味着您所有的引用都指向編譯的DLL,而不是項目。
由於VS加載許多項目引用的速度較慢,因此我多次看到具有大型解決方案的團隊(您有239個項目)采用了這種方法。
我見過使用的解決方法是:
一個包含239個項目的解決方案似乎違反了將開發划分為較小模塊的原則,但這並不總是您的決定...
經過一番調查,我發現了這個問題:
實際上,當將Visual Studio引用到項目中時,Visual Studio應該自動在項目之間添加這些依賴關系。 通過添加項目參考,我可以很容易地看到這一點。 另外,似乎不能刪除那些“依賴項”(請參閱我的編輯2)。
所以我問的問題是如何引用某些項目,而又不依賴某些項目?
我檢查了我的引用(至少在某些情況下我發現它不起作用)並且它們是項目引用,而不是dll。
我的一些同事使用完全相同的代碼(獲取最新版本的代碼而不進行更改)沒有出現此問題,並且在Visual Studio中顯示了依賴性。
因此,我最后刪除了解決方案文件附近的*.sdf
文件(關閉了Visual Studio之后)。 我重新打開並打開了tadaa,Visual Studio重新計算了所有依賴項。 現在我們進行重建,一切都直接成功了。
我不確定為什么會發生這種情況,我有一些時間殺死Visual Studio,然后可能是某些東西損壞了。
我在一個較小但高度相互依賴的解決方案中看到了此問題。 我們通過降低並行項目構建的最大數量來解決此問題,直到可以預期的成功為止。 工具->選項->項目和解決方案->生成並運行。
我知道這不是一個解決方案,但是如果您使用像MEF或Unity這樣的依賴注入技術,就可以將編譯依賴變成運行時依賴。
在這種情況下,您的項目具有有限的依賴性(接口,容器)。
但是我不得不說,這些技術會帶來一些副作用-例如“偽隨機”初始化等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.