【问题标题】:upgrading from visual studio 2005 to visual studio 2008从 Visual Studio 2005 升级到 Visual Studio 2008
【发布时间】:2010-04-19 13:39:59
【问题描述】:

我已经将我的一个 c# 项目从 Visual Studio 2005 升级到 Visual Studio 2008 并生成了 DLL。但是升级 Visual Studio 后 DLL 的大小为 6kb,升级前为 16kb。为什么体积变小了??这会有什么问题吗??

我还有一个问题 b/w bin 和 obj 文件夹有什么区别?这在 vs 2008 中给出了正确的 dll

【问题讨论】:

  • 不用担心 dll 的大小。现在,2010年刚出来。它很闪亮。
  • 目前我们不需要vs 2010,你能解释一下为什么升级后尺寸减小了吗?
  • 一个在发布中,一个在调试中,也许吧?
  • 不,我不能。我假设您还将构建从 2.0 升级到 3.5,因此您可以期待差异。如果它有效,那么大小应该很重要。
  • 嗨,丹,两者都是仅使用发布版本构建的,但存在大小差异......嗨 Kobi,我为这两种情况安装了 3.5 版本的 .net

标签: c# visual-studio visual-studio-2008 visual-studio-2005


【解决方案1】:

文件大小:

默认情况下,.NET 3.5 编译器使用 512 字节的文件对齐,而早期版本使用更大的大小 (4096)。除了在代码的 large 部分使用不同的预处理器指令的可能性之外,这是最可能的解释。更紧密的对齐会产生更小的二进制文件,不会导致任何问题。

编辑:根据要求,提供有关此选项的更多信息。来自MSDN (/filealign (C# Compiler Options))。此链接包含有关如何在 Visual Studio 中设置属性的说明。

每个部分将在 /filealign 值的倍数的边界上对齐。没有固定的默认值。如果未指定 /filealign,则公共语言运行时会在编译时选择默认值。

通过指定节大小,您会影响输出文件的大小。修改节大小对于将在较小设备上运行的程序可能很有用。

bin 和 obj 文件夹:

bin文件夹为输出文件夹,obj目录为中间输出文件夹。您构建的可执行文件将放置在 bin 目录中(当然所有这些都是可自定义的,但这是默认设置)。

【讨论】:

  • 感谢您的回复,但我对您的回答不清楚,您能否详细说明或提供一个最佳链接让我理解
  • 我还有一个问题 b/w bin 和 obj 文件夹有什么区别??这在 vs 2008 中给出了正确的 dll
  • @jbp117:bin文件夹为输出文件夹,obj目录为中间输出文件夹。您构建的可执行文件将放置在 bin 目录中(当然所有这些都是可自定义的,但这是默认设置)。
  • vs 2008的目标框架是.net 2.0...,vs 2005的默认文件对齐方式是4096字节,而vs 2008的默认文件对齐方式是512字节。这就是原因,你说的是我对吗?
  • 是的,这就是您的文件较小的原因。
【解决方案2】:

即使您在使用 Visual Studio 2008 时以 .NET 2.0 为目标(就像 Visual Studio 2005 所做的那样),您仍在使用 Visual Studio 2008 附带的新编译器。由于编译器不同,文件大小也会有所不同。

作为一些差异的示例,Visual Studio 2008 附带的 msbuild 版本现在提供 /m 选项,它允许编译器使用多个 CPU 内核优化其构建时间。

正如 Daniel Rose 所回答的,较新的编译器将提供更多优化。您仍然可以使用 Reflector 之类的工具来验证 DLL 之间的 IL 是否相同。

【讨论】:

  • 技术上这是正确的,但它从微不足道(他已经知道不同的编译器产生不同的大小)到与问题无关(/m)。
【解决方案3】:

VS 2005 使用 .NET 2.0,而 VS 2008 允许您使用 .NET 3.5。也许微软优化了代码生成?

编辑:至于 bin & obj:

编译过程中的所有中间文件都放在中间目录下(一般是obj\ConfigurationName)。在 C# 中,这可能是清单、缓存、资源、生成的文件……在 C/C++ 中,每个编译文件还包含一个 .obj 文件。

然后将实际输出(DLL/EXE 和 PDB)复制到输出目录(通常是 bin\ConfigurationName)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多