2011-03-04 82 views
3

你好:)我對C#/ .NET相當陌生,我有一些關於項目依賴的問題。觀察與傳遞項目依賴關係的構建?

第一:我的情況。我有一個解決方案 - 我們稱之爲MyLibrary - 它有幾個.dll-Output Projects。這些項目是相互依賴的(作爲項目引用)以及一些外部庫(.dll-References)。我確保項目引用外部參考的特定副本。

現在我有第二個解決方案 - MyApplication - 它有一些上述庫項目和其他項目。所以我所有的項目都參考了iva項目的參考資料。我已經設置了參考設置「Copy Local:True」的所有項目。

我現在的問題是,MyApplication拋出一個錯誤,指出其中一個庫項目具有不同的版本 - 這很奇怪,因爲如果我構建MyApplication,它應該構建所有需要的項目。

我現在的問題:

  • 如果我有項目C依賴於項目B而這又依賴於項目A,我需要引用項目A在項目C即使項目C不使用任何類型來自項目A.是否有解決方法?
  • 我可以得到一個乾淨的輸出日誌,它說明何時構建哪個項目?從Visual Studio輸出日誌我有麻煩不同項目是「重建」或只是複製到目標文件夾
  • 是否有工具,其中讀出* .sln或* .csproj文件,並直接顯示我哪些裝配參考哪些裝配?
  • 正如我所說的,我在MyApplication中包含了MyLibrary中的幾個項目,並將MyApplication中的MainProject的引用設置爲「Copy Local:True」。如果我清理MyApplication(解決方案),它將刪除MyLibrary-Destination-Folder中的所有* .dll。我能否以某種方式抑制這種行爲(它應該只從MyApplication-destination-folder中刪除* .dll)。

感謝四位的幫助。

P.S .:我來自德國,我有關於C#的「伽利略」書 - 這本書不太好。是否有一些好的教程/書籍直接關於Visual Studio的項目管理功能?

回答

4

在回答了幾個你的問題:

如果我有項目C依賴於 項目B而這又取決於 項目A,我需要引用項目 一個在項目C即使項目C不要 使用項目A中的任何類型。是否有 解決此問題的方法?

我不認爲這是真的一般。如果B公開了A的一些類型,那麼只需要引用A.例如,如果B中的類繼承自A中的類,那麼是的,C將需要A,因爲C需要知道基類。但是,如果B「皮」後面的所有A爲自己的類/接口,那麼C並不需要了解A.

是否有工具,其讀出 *的.sln或*。csproj文件,並直接顯示我哪些組裝參考 哪些程序集?

您可以直接從程序集的元數據中獲取此信息。 Reflector是一個很好的工具。它是免費的,但它似乎開始爲它收取4天前(無賴!)

關於visual studio問題的其他2個問題我不熟悉。但總的來說,我很驚訝你會遇到版本錯誤。你想使用強大的名字集會嗎?就我個人而言,我不會建議,除非您正在向公衆提供這些程序集。它這些程序集只是爲了在你自己的應用程序中分離關注點,然後不應該真正進行版本控制。由此產生的應用程序將根據每個子項目的最新版本進行編譯,並且每個子項目只會在其更改時編譯。

在任何情況下,您都必須指定您需要某個特定程序集的特定版本(可能在app.config/web.config中)。你可以從這個配置中刪除版本限制嗎?

+0

使用resharper。它具有將所有依賴項顯示爲可視圖形的功能:http://blog.jetbrains.com/dotnet/2013/06/13/resharper-8-architecture-tools/ – Anders 2014-01-30 10:20:55