Shy*_*yju 9 .net deployment dll assemblies visual-studio-2008
我有一个在Visual Studio 2008中开发的ASP.NET Web应用程序,由3个不同的项目组成(一个用于UI,一个用于BO,第三个用于DAL).
如何生成一个包含所有3个的汇编文件?现在它为解决方案中的每个项目生成3个DLLS.
Rom*_*iko 17
对于每个项目,创建一个netmodule或一个程序集,并将它们编译/合并到一个程序集中.
第一种选择.这是Jay R. Wren提出的:
这是一个可爱的hack,但是CSC和VBC都支持
/target:module和/addmodule选项,你实际上可以通过使用shell脚本或make文件在没有ILMerge的情况下执行此操作.Visual Studio不支持"netmodule"类型,但MSBuild支持.
将VB项目添加到您的解决方案中.卸载项目并编辑项目文件.
将OutputType更改为模块:
<OutputType>module</OutputType>
Run Code Online (Sandbox Code Playgroud)
我们不添加对所需项目的引用,而是添加一个模块.可悲的是,VStudio再次失败,但MSBUILD工作得很好.卸载项目并编辑项目文件.使用AddModules include指令添加项组.
<ItemGroup><AddModules Include="..\VbXml\bin\Debug\VbXml.netmodule" /></ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这将告诉msbuild告诉CSC使用
/addmodule指令,就像Studio管理的参考项目组一样.
主要缺点:添加模块没有Visual Studio Intellisense.我们已经有了参考资料,太糟糕了,我们没有模块.[更新:正如@Ark-kun在其他地方所指出的,Visual Studio可以引用.netmodule项目并具有Intellisense.只需在更改输出类型之前添加项目引用.]SharpDevelop迈出了第一步,但第二步,"添加模块"gui自SD 2.0以来一直作为低优先级项目开放.
第二种方式.这篇伟大的文章(由Scott Hanselman撰写)描述了如果您使用Visual Studio,如何自动编译程序集.与第一种方案不同,它确实为您提供了IntelliSense支持.
第三种方式.用scs手动完成.
示例如何创建多个模块并将主题链接到单个dll中:
csc /t:module RarelyUsedTypes.cs
csc /out:AllTypes.dll /t:library /addmodule:RarelyUsedTypes.netmodule AllTypes.cs
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Richter的书籍CLR via C#.
| 归档时间: |
|
| 查看次数: |
3647 次 |
| 最近记录: |