2009-04-29 64 views
5

Can I build 2 or more dlls from C# project in Visual Studio 2008?,我有另一个想法只创建一个大项目。之后,我通过使用post-build事件来调用Win应用程序项目(用于单独的一个大dll),将一个项目dll(包含很多类)分成每个类1个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

感谢,

+6

你为什么要这样做? – 2009-04-29 07:27:24

+0

我想你会得到更好的答案,如果你强调这是为了Silverlight控件的目的... – 2009-04-29 07:43:55

+0

如果你有一个使用Silverlight显示的大网站,你将花费很长时间来加载主页。 – 2009-04-29 07:48:09

回答

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的建议。

7

,你会得到这里的答案是从其他问题的答案没有什么不同:put in a separate project for each separate dll

我想问你的是你对“类”定义的理解。每个DLL一个类可能意味着你不熟悉程序集,名称空间和类的工作方式。

告诉我们,你真的想做什么?因为你认为你应该做什么来解决这个问题(例如,为每个类创建一个DLL)是不实际的。

更新

考虑你的要求(例如,Silverlight的Web应用程序)的情况下,我的结论是:分割你的类几个DLL文件不会导致性能的改善在ASP.NET页面,因为:

  • 的DLL仅用于服务器,它们是通过HTTP下载到您的浏览器
  • 一旦一个DLL被一个Web应用程序加载,它将不会再加载它 - 无论有多少用户同时使用您的网站。每个服务器一个DLL实例。
  • 当你启动你的web应用程序时,它会加载全部它依赖于编译的dll,无论你是否使用它。

因此,根据您的要求,考虑到带宽限制,最好不要将Silverlight用于您的应用程序。你可以探索的途径有:

  • 学习AJAX技术,特别是JSON,(可能不是ASP。NET AJAX和易于滥用的UpdatePanel)
  • 学习jQuery的找到你想要使用Silverlight
8

只是......为什么要做什么样的控制,这将在JavaScript执行?拥有大量dll可能会对应用程序启动产生性能影响(由于“融合”)。它也将非常多立即遭受循环引用,这是一个坏事

由于.NET代码(默认情况下)在第一次使用时得到了JIT,所以在dll中有额外的类没有在该应用程序中使用时没有太大的影响。他们只是静静地坐在那里,对任何人都没有困扰。

具有每个类的dll的纯粹管理成本将使部署等excruciating

总而言之,我想不出一个合理的理由这样做...

相关问题