从我可以在Visual Studio 2008中从C#项目构建2个或更多dll吗?,我有另一个想法,只创建一个大项目.之后,我通过使用post-build事件来调用Win app项目(对于单独的一个大dll),将每个类的项目dll(包含许多类.)分成1个dll.这该怎么做?
而且,我还需要在一个大dll中管理附件.
更新 我发现一些技巧可以指导我通过自定义构建解决这个问题?而且,我认为我可以创建自定义处理程序,通过使用单独的模块文件和al.exe生成动态程序集文件.但是这个功能超出了我的期望和不确定性(源代码很少改变).
多文件程序集:什么和如何
如何:构建多文件程序集
POCO自定义多文件组件和ReSharper
谢谢,
只是......为什么?拥有大量dll会对应用启动产生性能影响(由于"融合").它也会立即遭受循环引用,这是一件坏事.
由于.NET代码(默认情况下)在首次使用时会获得JIT,因此在dll中使用未在该应用程序中使用的额外类会产生巨大的影响.他们只是静静地坐在那里,对任何人都没有打扰.
每个类具有dll的纯粹管理成本将使部署等难以忍受.
总而言之,我无法想到这样做的合理理由......
你将在这里得到的答案与另一个问题的答案没有什么不同:为每个单独的dll单独设置一个项目.
我想问你的是你对"阶级"定义的理解是什么.每个DLL一个类可能意味着您不太熟悉程序集,命名空间和类的工作方式.
告诉我们,您真正希望能做什么?因为你认为你应该做的就是解决这个问题(例如,每个类创建一个DLL)是不切实际的.
更新
考虑到您的需求的上下文(例如,Silverlight Web应用程序),我的结论是将类拆分为多个DLL不会导致 ASP.NET网页的性能提升,因为:
DLL仅由服务器使用,不会通过HTTP下载到您的浏览器
一旦Web应用程序加载了DLL,它就不会再次加载它 - 无论有多少用户同时使用您的站点.每个服务器一个DLL实例.
当您启动Web应用程序时,它将加载它所依赖的所有 DLL进行编译,无论您是否将使用它.
因此,考虑到带宽限制,根据您的要求,最好不要将Silverlight用于您的应用程序.您可以探索的途径是:
学习AJAX技术,特别是JSON,(可能不是ASP.NET AJAX及其易于滥用的UpdatePanel)
学习jQuery以查找将在JavaScript中实现使用Silverlight要执行的操作的控件