我目前有一个引用十个.dll文件的解决方案。那些.dll文件反过来都引用了共享的.dll文件。
今天我开始收到一个错误,在调试时声明“源文件与模块构建时的错误不同。”,在重新编译共享的.dll之后立即执行。
我尝试了所有平常的事情。我删除了bin和object文件夹。我重新编译了。我关闭了Visual Studio的所有实例,并在它们全部关闭后重新启动。我重新启动了我的机器。没有任何修正似乎可以解决它。
答案 0 :(得分:2)
我猜你的10个DLL中有一个引用了共享DLL的不同副本,而不是你编译的那个。
由于您拥有所有源,因此将所有项目放在同一解决方案中,并让DLL引用共享DLL的项目。这将解决您的问题。
答案 1 :(得分:1)
它也发生在我身上。一旦我通过从头开始重新编译项目来修复它(按照与VS相同的顺序)。
另一次这没有帮助。我不记得我当时做了什么。
我相信这是VS中的一个错误。 我注意到你正在运行VS2008。升级后问题可能会消失(假定的bug可能已经修复)。 VS2010也比VS2008更好用,因此保持最新状态可能是它自己的理由。为什么不下载评估VS11并在那里试一试。
将所有项目移至一个解决方案,以简单正确的方式引用它们。编译。现在,您可以随处获得正确的DLL,并且可以回到更多样化的解决方案。
您也可以尝试使用MSBuild。这很简单,因为你已经在VS中拥有了这些项目。一旦它由MSBuild构建(VS自己使用它),它可能应该再次在VS中编译。
最后,您可以尝试使用nAnt构建。编译完成后,你可以再次在VS中编译。
祝你好运。我去过那儿。很糟糕。答案 2 :(得分:0)
我假设您在项目中直接引用某个DLL,而不是项目。这意味着如果你甚至清理和重建,相同的 dll将像参考一样使用。 通常这是一个问题,所以我建议你检查你的参考。
答案 3 :(得分:0)
[编辑]假设这是asp.net,无视。 [/编辑]
您是否删除了临时.NET文件夹的所有内容?
在:
C:\ Windows \ Microsoft.NET \ Framework [您的版本] \ Temporary ASP.NET Files
或
C:\ Windows \ Microsoft.NET \ Framework64 [您的版本] \ Temporary ASP.NET Files
答案 4 :(得分:0)
将所有解决方案的输出文件夹中的共享.dll的最后修改日期与存储在主解决方案的输出文件夹中的文件进行比较时,我注意到它们与我的文件不同刚刚建成。
这对我没有意义,所以我只是将新文件复制到输出文件夹中。这并没有解决问题。在后续版本中,旧版本再次放入输出文件夹,在调试时立即导致错误...
在编译期间,旧版本与其他引用的.dll之一一起被拉出。显然有一些检查是使用拉入的文件名进行的,因此只使用了1个文件,但没有检查最新的版本号。
我能够通过从主解决方案创建对共享.dll的引用来实际解决问题。直接引用显然(或者希望)在引用引用的文件之前被引入(并且已经被复制到与引用的.dll相同的输出文件夹中),因此最先成功引入了最新文件。
如果需要清晰,请告诉我!
答案 5 :(得分:0)
我很少回复帖子,因为我一般都太忙了,但我只花了很多时间来解决同样的问题。我在Windows 7中运行VS 2008.我已将我的Visual Studio设置为在XP兼容模式下运行,以修复我在其他项目中遇到的一些问题,并忘记将其重置为不在兼容模式下运行。
一旦我删除了Run In兼容模式(在DevEnv.exe上的Windows资源管理器中),我的问题就是源与调试信息不同步了。
希望这可能会帮助将来遇到同样问题的人。