相关疑难解决方法(0)

CodeDom有官方替代品吗?

我正在寻找与语言无关(至少在某些范围内)源代码生成的System.CodeDom命名空间,并且我发现了一些阻止使用的信息CodeDom.

我认为这篇早期博客文章中描述的一些遗漏现在已经修复,而且CodeDom似乎没有提供创建switch语句的方法的事实仍然允许 - 性能较差? - 没有弄乱生成类型的公共接口的变通方法.这同样适用于自动C#属性和集合初始值设定项.

但是,其他遗漏实际上无法解决,例如无法创建终结器,无法声明扩展方法,或者缺乏对通用引用类型约束的直接支持.

请注意,CodeSnippetTypeMember通过任何其他方式使用或注入文字源代码片段的建议解决方案并不令人满意,因为它们不是与语言无关的 - 从而消除了整个使用点CodeDom而不是String.Format文字代码片段.

最后,甚至在这个SO问题中建议"CodeDom是失败的,表达树(或者更确切地说是"语句"树)是前进的方式" - 尽管没有任何解释如何从表达式树中实际获取任何源代码(除了不能用表达式树声明类的限制之外.

CodeDom仍然是生成源代码的首选方法,还是当前的BCL提供了一个我想不到的名称的任何模糊替换?

.net code-generation codedom

11
推荐指数
1
解决办法
3021
查看次数

为什么要创建DLL而不是将所有内容编译成一个大的可执行文件?

我看到并完成了许多小型产品,其中同一块软件被分成一个可执行文件和几个DLL,这些DLL不仅仅是由其他人完成的共享库,而是专门为这个软件完成的库,由同一个开发团队.(我不是在这里谈论大规模的产品,只需要数百个DLL并与其他产品广泛分享.)

据我所知,从开发人员的角度来看,将代码分成几个部分,每个部分都编译成一个单独的DLL .这意味着:

  • 如果开发人员更改了一个项目,他必须只重新编译这个项目,而依赖项目可以更快.
  • 项目可以由团队中的单个开发人员完成,而其他开发人员只需使用提供的接口,而无需插入代码.
  • 软件的自动更新有时可能更快,服务器影响更小.

但最终用户呢?当一切都可以组合在一起时,提供一个由一个EXE和几个DLL组成的软件并不是一件坏事吗?毕竟:

  • 用户可能甚至不了解这些文件是什么以及为什么他们在硬盘上填充内存,
  • 用户可能想要移动程序,例如将其保存在USB闪存驱动器上.拥有一个大的可执行文件可以简化
  • 大多数防病毒软件都会检查每个DLL.检查一个可执行文件将比较小的可执行文件和几十个库快得多.
  • 使用DLL会使某些事情变得更慢(例如,在.NET Framework中,必须找到并检查"好"库是否已签名),
  • 如果DLL被删除或被错误的版本替换会发生什么?每个程序都处理这个吗?或者它甚至没有解释它有什么问题就崩溃了?
  • 有一个大的可执行文件有一些其他的优势.

所以是不是但从最终用户的角度更好,对于小/中等规模的方案,以提供一个大的可执行文件?如果是这样,为什么没有工具允许轻松实现(例如,集成在通用IDE中的魔术工具将整个解决方案编译成一个可执行文件,当然不是每次,但是按需或在部署期间).


这有点类似于将所有CSS或所有JavaScript文件放入用户的一个大文件中.拥有多个文件对于开发人员而言更加智能,并且更易于维护,但将网站的每个页面链接到两个文件而不是几十个文件可以优化性能.以同样的方式,CSS精灵对于设计师来说是可怕的,因为它们需要更多的工作,但从用户的角度来看更好.

optimization performance dynamic-linking

10
推荐指数
1
解决办法
3421
查看次数

将DLL分组以在Executable中使用

有没有办法分组一堆DLL,并仍然在运行时使用它们(不压缩).对不起,这个问题听起来简洁而愚蠢,但我不确定还要问什么.

我会解释一下情况:

我们有两个独立的Windows应用程序,现在我们的一个应用程序已经膨胀到如此笨拙的比例,以至于其他应用程序无法在第一个应用程序的范围之外运行.我们希望保留一些封装,同时让较小的程序进入一些较大程序的功能.

运行应用程序没有问题,除了我们不想发送较小项目所有的20-30个DLL.

delphi dll

4
推荐指数
1
解决办法
595
查看次数