2013-02-24 258 views
0

我正在開發項目,解決方案有40多個項目。 我有兩個構建配置精簡版和發行版。 Lite構建A-G項目併發布構建A- M項目。 是否可以製作一個發佈目標,建立精簡版,並使用Lite的發行版的DLL?c#解決方案的構建優化

+0

您可以將您的工件輸出到特定的文件夾(您需要在每個項目中執行此操作)並直接引用DLL而不是使用項目引用。 – Oded 2013-02-24 20:01:37

+0

發佈配置如何知道它不需要構建A-G,而只需構建H-M項目? – user2105246 2013-02-24 20:08:23

+0

它不會。這將取決於您輸出調試/釋放文物的位置以及您如何引用它們。 – Oded 2013-02-24 20:11:31

回答

0

我處理這個的方式是。

  1. 讓一切都從相對文件夾中引用它的依賴關係。

    。\ MySolution01.sln

    。\ MyCSProj01 \ MyCSProj01.csproj

    。\ MyCSProj02 \ MyCSProj02.csproj

    。\ MyCSProjN \ MyCSProjN.csproj

    。\ ThirdPartyReferences \

    。\ ThirdPartyReferences \ MyCoolDll.dll

    。\ ThirdPartyReferences \ SomePDFLibrary.dll

,並在的csproj

<Reference Include="SomePDFLibrary"> 
    <HintPath>..\ThirdPartyReferences\SomePDFLibrary.dll</HintPath> 
</Reference> 

2.

寫MSBuild任務是

A.下拉代碼 「精簡版」。 B.建立「精簡版」。 C.下拉「釋放」代碼。 D.將文件從「精簡版」複製到ThirdPartyReferences文件夾中進行「發佈」。 E.構建「發佈」。

替代的想法。

當「精簡版」構建時,「發佈」這些DLL到二進制存儲庫。 「常春藤」(apache)是非微軟的。 (你可以使用ivy的命令行版本,但大多數微軟開發人員不會去這裏) Nuget(帶有本地存儲庫)是〜二進制存儲庫的「微軟風格」。

http://gregorsuttie.com/2011/01/03/using-a-nuget-local-repository/

然後當「釋放」建造,它「拉下來」,從二進制庫的二進制文件。