我正在寻找与语言无关(至少在某些范围内)源代码生成的System.CodeDom命名空间,并且我发现了一些阻止使用的信息CodeDom.
我认为这篇早期博客文章中描述的一些遗漏现在已经修复,而且CodeDom似乎没有提供创建switch语句的方法的事实仍然允许 - 性能较差? - 没有弄乱生成类型的公共接口的变通方法.这同样适用于自动C#属性和集合初始值设定项.
但是,其他遗漏实际上无法解决,例如无法创建终结器,无法声明扩展方法,或者缺乏对通用引用类型约束的直接支持.
请注意,CodeSnippetTypeMember通过任何其他方式使用或注入文字源代码片段的建议解决方案并不令人满意,因为它们不是与语言无关的 - 从而消除了整个使用点CodeDom而不是String.Format文字代码片段.
最后,甚至在这个SO问题中建议"CodeDom是失败的,表达树(或者更确切地说是"语句"树)是前进的方式" - 尽管没有任何解释如何从表达式树中实际获取任何源代码(除了不能用表达式树声明类的限制之外.
CodeDom仍然是生成源代码的首选方法,还是当前的BCL提供了一个我想不到的名称的任何模糊替换?
我看到并完成了许多小型产品,其中同一块软件被分成一个可执行文件和几个DLL,这些DLL不仅仅是由其他人完成的共享库,而是专门为这个软件完成的库,由同一个开发团队.(我不是在这里谈论大规模的产品,只需要数百个DLL并与其他产品广泛分享.)
据我所知,从开发人员的角度来看,将代码分成几个部分,每个部分都编译成一个单独的DLL .这意味着:
但最终用户呢?当一切都可以组合在一起时,提供一个由一个EXE和几个DLL组成的软件并不是一件坏事吗?毕竟:
所以是不是但从最终用户的角度更好,对于小/中等规模的方案,以提供一个大的可执行文件?如果是这样,为什么没有工具允许轻松实现(例如,集成在通用IDE中的魔术工具将整个解决方案编译成一个可执行文件,当然不是每次,但是按需或在部署期间).
这有点类似于将所有CSS或所有JavaScript文件放入用户的一个大文件中.拥有多个文件对于开发人员而言更加智能,并且更易于维护,但将网站的每个页面链接到两个文件而不是几十个文件可以优化性能.以同样的方式,CSS精灵对于设计师来说是可怕的,因为它们需要更多的工作,但从用户的角度来看更好.
有没有办法分组一堆DLL,并仍然在运行时使用它们(不压缩).对不起,这个问题听起来简洁而愚蠢,但我不确定还要问什么.
我会解释一下情况:
我们有两个独立的Windows应用程序,现在我们的一个应用程序已经膨胀到如此笨拙的比例,以至于其他应用程序无法在第一个应用程序的范围之外运行.我们希望保留一些封装,同时让较小的程序进入一些较大程序的功能.
运行应用程序没有问题,除了我们不想发送较小项目所有的20-30个DLL.