0

我目前有一个引用十个 .dll 文件的解决方案。这些 .dll 文件又都引用了一个共享的 .dll 文件。

今天我在调试时开始收到一个错误,指出“源文件与构建模块时的错误不同。”,紧接着重新编译共享的 .dll。

我尝试了所有通常的方法。我删除了 bin 和 object 文件夹。我重新编译。我关闭了 Visual Studio 的所有实例,并在它们全部关闭后重新启动。我重新启动了我的机器。没有任何固定似乎可以解决它。

4

6 回答 6

2

我猜您的 10 个 DLL 中的一个引用了共享 DLL 的不同副本,而不是您编译的那个。

由于您拥有所有源代码,请将所有项目放在同一个解决方案中,并让 DLL 引用共享 DLL 的项目。这将解决您的问题。

于 2012-04-19T18:45:51.313 回答
1

它也发生在我身上。一旦我通过从头开始重新编译项目来修复它(以与VS相同的顺序)。

还有一次,这没有帮助。我不记得我当时做了什么。

我相信这是VS中的一个错误。我注意到您正在运行 VS2008。升级后问题可能会消失(假设的错误可能已修复)。VS2010 也比 VS2008 更易于使用,因此它可以作为自己的领域来保持最新状态。为什么不下载评估版 VS11 并在那里试用。

将所有项目移至一个解决方案,以简单正确的方式引用它们。编译。现在,您在任何地方都拥有正确的 DLL,并且可以返回到更多样化的解决方案。

您也可以尝试使用 MSBuild。这很容易,因为您已经在 VS 中拥有项目。一旦它由 MSBuild(VS 自己使用)构建,它可能应该再次在 VS 中编译。

最后,您可以尝试使用 nAnt 进行构建。编译完成后,您可能可以再次在 VS 中编译。

祝你好运。我去过那儿。糟透了。

于 2012-04-20T22:00:19.393 回答
0

[编辑] 假设这是 asp.net,忽略。[/编辑]

您是否删除了所有临时 .NET 文件夹?

无论是在:

C:\Windows\Microsoft.NET\Framework[你的版本]\Temporary ASP.NET Files

或者

C:\Windows\Microsoft.NET\Framework64[你的版本]\Temporary ASP.NET Files

于 2012-04-19T18:49:33.633 回答
0

在将所有解决方案的输出文件夹中共享 .dll 的最后修改日期与存储在主要解决方案的输出文件夹中的文件进行比较时,我注意到它们与我刚刚构建的文件不同.

这对我来说没有意义,所以我只是将新文件复制到输出文件夹中。这并没有解决问题。在随后的构建中,旧版本再次被放入输出文件夹,在调试时立即导致错误......

在编译期间,旧版本与其他引用的 .dll 之一一起被提取。显然,对拉入的文件名进行了某种检查,以便只使用 1 个文件,但不检查最新版本号。

我能够通过从主要解决方案创建对共享 .dll 的引用来实际解决问题。 直接引用显然(或者可能希望)在引用引用的文件之前被拉入(并且已经被复制到与引用的 .dll 相同的输出文件夹中),因此最新的文件首先被成功拉入。

如果需要澄清,请告诉我!

于 2012-04-20T14:16:04.527 回答
0

我很少回复帖子,因为我通常太忙了,但我只是在同样的问题上花了很多时间。我在 Windows 7 中运行 VS 2008。我已将我的 Visual Studio 设置为在 XP 兼容模式下运行,以解决我在其他项目中遇到的一些问题,但忘记将其重置为不在兼容模式下运行。

一旦我删除了运行兼容模式(在 DevEnv.exe 上的 Windows 资源管理器中),我的源与调试信息不​​同步的问题就消失了。

希望这可以帮助将来遇到同样问题的人。

于 2013-12-20T13:50:41.530 回答
0

您在项目中直接引用了某个 DLL,而不是project。这意味着如果您甚至清理和重建,相同的dll 将被用作参考。很多时候这是一个问题,所以我建议你检查你的参考资料。

于 2012-04-19T18:45:10.363 回答