DLL在分别构建的解决方案中的大小不同。

11 浏览
0 Comments

DLL在分别构建的解决方案中的大小不同。

我有两个在VS2010(C#,.NET 4.0)中开发的应用程序 - 每个应用程序都是一个单独的解决方案,包含两个项目,一个用于应用程序特定元素,另一个用于构建DLL的共享库项目。

我的问题是,当构建此DLL时,在其中一个构建下,DLL比应该的大16384字节(0x4000)。这个大小差异在调试和发布构建中都是一样的。虽然正确的版本在ClearCase中,但是在C:驱动器上的副本上我得到完全相同的结果,所以它似乎不是配置规范或视图相关的问题。

我已经查看了VS设置,完全删除了bin / obj文件夹以强制进行完全重建,使用WinMerge来比较所有文件/文件夹,但都没有成功。

使用dumpbin,我可以在clr头中看到资源目录的大小差异为0x3F20。我怀疑剩下的0xE0是DLL中的部分对齐引起的。

在这一点上,我束手无策。有关可能导致此问题的建议或进一步调查的步骤???

编辑:

也许我没有很好地描述VS解决方案 - 该解决方案有两个项目。共享库只是通过添加->现有项目添加到解决方案中。选择构建->重新构建解决方案时,将同时构建这两个项目。

关于Hans的评论,从配置管理/可信度的角度来看,这是一个问题。如果没有更改源代码/项目文件,我唯一期望在DLL中更改的是任何构建时间/版本细节 - 而不是像我现在这样的15K差异。

0
0 Comments

问题出现的原因是.suo(Solution User Options)文件损坏,该文件可能被之前的用户损坏(不幸的是,该文件被放置在版本控制下并由先前的用户维护)。幸运的是,删除该文件并没有丢失任何重要的内容。

关于.suo文件的更多信息可以在stackoverflow的问题“为什么会有sln、suo和csproj文件?”中找到。

来自Debugger Settings Visual Studio Add In– Easily Copy Breakpoints between Machines的引用很好地概括了问题:

.SUO文件是你存在的噩梦。你遇到的几乎所有与Visual Studio相关的问题都是由损坏的.SUO文件导致的。可悲的是,损坏.SUO文件似乎只需要你的心跳。换句话说,每当你的Visual Studio崩溃、拒绝调试或者表现奇怪时,都是.SUO文件的错。每当有人问我关于奇怪的Visual Studio行为时,我立刻回答:“删除.SUO文件!”在Visual Studio的卫生方面,删除.SUO文件与癌症筛查一样重要。

解决这个问题的方法是删除.suo文件。

0