1

我目前正处于项目的最后阶段。作为我努力的一部分,我一直在重新组织主要的 MVC 解决方案以使用对预编译库的引用,而不是在一个解决方案中包含 15 个不同的项目。

我的问题与应用发布/调试开关的位置有关。

例如,我的低级库是在调试模式下构建的,而我的主要 Web 客户端应用程序是在发布模式下构建的。

项目会以发布模式(因为这是主应用程序的配置)还是调试模式(因为主应用程序依赖于以调试模式编译的二进制文件)构建?

4

1 回答 1

2

在您描述的场景中,您的 Web 项目将构建为“发布”程序集,并将依赖于“调试”程序集。引用的原因是“发布”和“调试”程序集(除非使用非默认选项)之间的唯一区别是分别排除或包含调试符号和程序集中 IL 的优化。所以,这是一个完全有效的情况,有一个引用调试程序集的发布程序集,尽管它可能不是你想要的。因为调试程序集中会有更多的 IL(因为它内置了 wirhout 优化)让 JIT 做更多的工作来尝试优化它将在机器上运行的代码,这可能会导致运行时体验不那么优化、速度较慢。

根据您是否对引用的程序集进行数字签名,您可以使用构建后任务将调试编译的引用程序集替换为项目输出的发布编译程序集。

可以提出一个论点,即您不应该在用于创建它们的解决方案之外引用调试编译的程序集,因为将 DLL 作为文件引用(而不是在 IDE 中进行项目引用)的操作假设是程序集是它包含的功能的经过测试的完成版本。

总之,您的项目的编译方式不依赖于它所引用的程序集的构建配置,但如果可能,您应该改为引用这些程序集的发布编译版本。

于 2012-06-30T08:32:37.300 回答