我目前正处于项目的最后阶段。作为我努力的一部分,我一直在重新组织主要的MVC解决方案,以使用对预编译库的引用,而不是在一个解决方案中有15个不同的项目。
我的问题与Release / Debug开关的应用位置有关。
比如说,我的低级库是在调试模式下构建的,而我的主Web客户端应用程序是在发布模式下构建的。
项目是否将在发布模式下构建(因为这是主应用程序的配置)或调试模式(因为主应用程序依赖于在调试模式下编译的二进制文件)?
答案 0 :(得分:2)
在您描述的场景中,您的Web项目将构建为“Release”程序集,并依赖于“Debug”程序集。引号的原因是“Release”和“Debug”程序集之间的唯一区别(除非使用非默认选项)分别是调试符号的排除或包含以及程序集中IL的优化。所以,这是一个完全有效的情况,有一个发布程序集引用一个调试程序集,虽然它可能不是你想要的。因为调试程序集中会有更多的IL(因为它内置的wirhout优化)让JIT做更多的工作来尝试优化它将在机器上运行的代码,可能导致在运行时没有优化,慢的体验。
根据您是否对引用的程序集进行数字签名,您可以使用构建后任务将调试的已编译引用程序集替换为项目输出的已发布编译程序集。
可以建议您不要在用于创建它们的解决方案之外引用调试编译的程序集,作为将DLL引用为文件的操作假设(与在IDE中执行项目引用相反)是程序集是它包含的功能的经过测试的完成版本。
总之,编译项目的方式不依赖于它引用的程序集的构建配置,但是,如果可能,您应该引用这些程序集的发布编译版本。