我有一個在Visual Studio 2008中開發的ASP.NET Web應用程序,由3個不同的項目(一個用於UI,BO之一和DAL的第三個)組成。Visual Studio 2008:從許多項目的解決方案創建單個DLL
如何生成一個包含所有3的單個程序集文件?現在它爲解決方案中的每個項目生成3個DLLS。
我有一個在Visual Studio 2008中開發的ASP.NET Web應用程序,由3個不同的項目(一個用於UI,BO之一和DAL的第三個)組成。Visual Studio 2008:從許多項目的解決方案創建單個DLL
如何生成一個包含所有3的單個程序集文件?現在它爲解決方案中的每個項目生成3個DLLS。
我不知道在VS2008中是否確實有這個功能。但你當然可以在VS之外做到這一點。
爲每個項目的創建netmodule或組裝和編譯/他們都合併到一個單一的組件。
第一種選擇。這是提出Jay R. Wren:
這是一個可愛的黑客,但與CSC和VBC都支持
/target:module
和/addmodule
選項,你實際上可以只用一個shell腳本做這沒有ILMerge或製作文件。Visual Studio不支持「netmodule」類型,但MSBuild可以。
將VB項目添加到您的解決方案。卸載項目並編輯項目文件。
更改輸出類型以模塊:
<OutputType>module</OutputType>
添加到所需項目的引用相反的,我們添加一個模塊。可悲的是,再次VStudio在這裏失敗,但MSBUILD工作得很好。卸載項目並編輯項目文件。使用AddModules include指令添加項目組。
<ItemGroup><AddModules Include="..\VbXml\bin\Debug\VbXml.netmodule" /></ItemGroup>
這將告訴的MSBuild告訴CSC使用
/addmodule
指令,就像參考項目組該工作室做管理。
重大缺點:沒有添加模塊的Visual Studio Intellisense。我們已經有引用,這太糟糕了,我們沒有模塊。[更新:由於@Ark-kun指出的其他地方,Visual Studio可以參考.netmodule
項目,並有智能感知。只需添加項目參考,然後再改變輸出類型。]SharpDevelop有第一步,但第二步,「添加模塊」gui已經作爲SD 2.0以後的低優先級項目開放。
第二種方式。這個great article(Scott Hanselman作者)描述瞭如何使用Visual Studio自動運行megre程序集。它確實給你智能感知支持
,不像第一個替代
。
第三種方式。用scs手動執行。
示例如何創建幾個模塊和鏈接主題到單個DLL:
csc /t:module RarelyUsedTypes.cs
csc /out:AllTypes.dll /t:library /addmodule:RarelyUsedTypes.netmodule AllTypes.cs
欲瞭解更多信息,請參閱裏希特的書CLR via C#。
所有三種方式產生一個組件。但只有第二種方式給你一個**文件**。 – 2010-03-18 17:15:10
難道那種打敗n層項目的目的? – slugster 2009-12-10 05:42:22
可能是爲了便於部署? – 2009-12-10 08:38:24
也分配。 – 2009-12-11 07:06:51