从Can I build 2 or more dlls from C# project in Visual Studio 2008?,我有另一个想法,只创建一个大项目。之后,我通过使用post-build事件来调用Win app项目(对于单独的一个大dll),将每个类的项目dll(包含许多类。)分成1个dll。怎么做?
此外,我还需要在一个大dll中管理附件。
更新 我找到了一些技巧可以指导我通过自定义构建来解决这个问题?而且,我想我可以创建自定义处理程序,通过使用单独的模块文件生成动态程序集文件。 Al.exe工具。但是这个功能超出了我的期望和不确定性(源代码很少改变)。
Multi-file Assemblies: What and How
How to: Build a Multifile Assembly
POCO Custom Multifile Assembly and ReSharper
谢谢,
答案 0 :(得分:8)
只是......为什么?拥有大量dll会对应用启动产生性能影响(由于“融合”)。它也会非常立即受到循环引用的影响,这是坏事。
由于.NET代码(默认情况下)在首次使用时会获得JIT,因此在dll中使用未在该应用程序中使用的额外类会产生巨大的影响。他们只是静静地坐在那里,对任何人都没有打扰。
每个类使用dll的纯粹管理成本将使部署等难以忍受。
总而言之,我无法想到这样做的明智理由......
答案 1 :(得分:7)
您将在这里得到的答案与其他问题的答案没有什么不同:put in a separate project for each separate dll。
我想问你的是你对“阶级”定义的理解是什么。每个DLL一个类可能意味着您不太熟悉程序集,命名空间和类的工作方式。
告诉我们,您真正希望能做什么?因为你认为你应该做的就是解决这个问题(例如,每个类创建一个DLL)是不切实际的。
<强>更新强>
考虑到您的需求的上下文(例如,Silverlight Web应用程序),我的结论是将您的类拆分为多个DLL将不会导致ASP.NET网页中的性能改进,因为:
因此,考虑到带宽限制,根据您的要求,最好不要将Silverlight用于您的应用程序。您可以探索的途径是:
答案 2 :(得分:3)
此问题通过MSBuild的自定义脚本解决,该脚本在另一个问题中有解释。
<ItemGroup>
<Compile Include="Class1.cs">
<Plugin>true</Plugin>
</Compile>
<Compile Include="Class2.cs" />
<Compile Include="Class3.cs">
<Plugin>true</Plugin>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
Visual studio one project with several dlls as output?
感谢@franko_camron提出建议。