2012-06-30 42 views
1

我目前正处于项目的最后阶段。作为我努力的一部分,我一直在重组主要的MVC解决方案,以使用对预编译库的引用,而不是在一个解决方案中包含15个不同的项目。在Visual Studio中应用的发布/调试级别是什么?

我的问题涉及应用Release/Debug开关的位置。

例如说,我的低级库是以Debug模式构建的,我的主Web客户端应用程序是在Release模式下构建的。

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

+1

“项目是否会建成”您指的是哪个项目,主要应用程序还是图书馆? Visual Studio的调试/发布设置是每个项目,而不是每个解决方案。 –

+0

真的有必要拉出各种项目并参考编译的库吗?你会独立开发这些其他库吗,还是只会改变主应用程序?它们只用于主应用程序吗?我出于好奇而问。 –

+0

@Adam - 主项目。从本质上讲,我问“如果主要应用程序是在发布模式下构建的,其他所有内容都遵循这些标准”? –

回答

2

在描述的场景中,您的web项目将作为“发布”程序集构建,并将依赖于“调试”程序集。引用的原因是,“发布”和“调试”程序集之间的唯一区别(除非使用非默认选项)分别排除或包含调试符号和程序集中IL的优化。因此,使用一个发布程序集引用一个调试程序集是一个非常有效的情况,尽管它可能不是你想要的。因为在调试程序集中会有更多的IL(因为它构建了无线优化)给JIT更多的工作来试图优化它将在机器上运行的代码,这可能会导致运行时没有经过优化的慢速体验。

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

可以作出一个参数,你不应该在被用来创建它们的解决方案之外引用调试编译的程序集,作为将DLL作为文件引用的操作性假设(而不是在IDE中执行项目引用)是程序集是它包含的功能的测试完成版本。总之,编译项目的方式不依赖于它所引用的程序集的构建配置,但是,如果可能的话,应该引用这些程序集的发布编译版本。

+0

这么长的故事,编译是“发布模式”,但JIT需要做额外的工作来整理调试依赖? –

+0

JIT将在调试程序集本身上花费更多时间,调试库中的调用将花费更长的时间,在发布程序集中运行的代码应该比调试程序集中运行的代码快(假设苹果对苹果进行比较执行代码) – mlorbetske

相关问题