源文件与构建模块时不同

时间:2010-06-21 18:33:22

标签: c# visual-studio-2008

这让我发疯了。

我正在尝试修改一个相当大的项目。我之前注意到,当我输入DbCommand时,visual studio没有对其进行任何语法突出显示,而我正在使用System.Data.Common

即使没有突出显示,该项目似乎在我的浏览器中正常运行。所以我决定运行调试器,看看事情是否真的有效。

每次调用未突出显示的类时,我都会收到"the source file is different from when the module was built"消息。

我清理了解决方案并重建了几次,删除了tmp文件,按照这里的所有指示Getting "The source file is different from when the module was built.",重新启动了Web服务器,但它仍然告诉我源文件显然是不同的。

由于这个原因,我无法测试我今天编写的任何代码。

  • 当我刚刚编译时,源如何与二进制文件不同 它?
  • 有没有什么方法可以将某种感觉转化为视觉工作室,或者是 我错过了什么?

27 个答案:

答案 0 :(得分:106)

我在运行控制台应用程序时出现此问题,其中不同的源是具有入口点的源(静态void Main)。删除bin和obj目录并进行完全重建似乎纠正了这一点,但每次我更改代码时,它都会再次过时。

我找到的原因是:

  1. 我选中了“仅在运行时构建启动项目和依赖项”(工具 - >选项 - >项目和解决方案 - >构建和运行)
  2. 在Configuration Manager中,我的启动项目未选中“Build”
  3. (对于#2 - >可通过“调试/发布”下拉列表中的工具栏访问。)

答案 1 :(得分:23)

我只是遇到同样的问题,我的项目都在同一个解决方案中,所以他们使用Project to Project引用,所以当一个更改时,其他项目应该已经更新。然而情况并非如此,我试图构建,重建,关闭VS2010,从源代码控制中提取新副本。这些都不起作用,我最终尝试的是右击项目并单独重建每个项目。这更新了.dlls和.pdb文件,因此我可以通过调试。

这里的问题是您的dll和/或pdb文件不同步。

答案 2 :(得分:5)

请按照以下步骤操作

  1. 只需从生成DLL的项目中删除bin目录。
  2. 重建项目。
  3. 从引用DLL的项目中删除引用。
  4. 再次提供参考资料。
  5. 享受。

答案 3 :(得分:4)

除了这些答案之外,由于路径错误,我在用旧的DLL替换新的DLL时遇到了相同的问题。如果仍然出现此错误,则可能不会为DLL引用错误的路径。转到IIS管理器,然后单击使用您的DLL的网站。在右侧窗口中,单击“高级设置”,然后转到“文件资源管理器”上“ Physical Path”文件夹的路径,并确保您正在使用此文件夹替换DLL。

答案 4 :(得分:4)

有些事情要检查:

您是否仔细检查了项目参考?

您是否仍在运行Visual Studio启动的Web服务器?检查系统托盘并查找带有齿轮图标的页面(您可能有多个):

alt text http://blogs.msdn.com/blogfiles/webdevtools/WindowsLiveWriter/Tip.NetDevelopmentServerinaMultiprojectS_104C2/image_2.png

右键单击并关闭/退出。你可能有不止一个。你现在可以调试你的更改吗?

您是在运行调试版本但是只构建了发布版本(反之亦然)?

编译实际上是否成功了?我知道我点击了“有错误,你还想继续吗?”消息几次没有意识到。

答案 5 :(得分:3)

使用Web服务时,可能会因使用Visual Studio“浏览器中的视图”命令而导致此问题。这将服务的DLL和PDB文件放在bin和obj文件夹中。当从客户端进入Web服务时,Visual Studio以某种方式在bin(或obj)文件夹中使用PDB,但它在项目的输出构建文件夹中使用DLL。有几种解决方法:

  1. 尝试删除Web服务bin和obj文件中的DLL和PDB文件。
  2. 尝试在Visual Studio中单击“在浏览器中查看”。
  3. 如果您之前收到源文件不匹配错误,则Visual Studio可能已将文件名添加到黑名单中。检查解决方案属性。在对话框的左侧选择“公共属性 - >调试源文件”。如果您的Web服务源文件出现在“不要查找这些源文件”字段中,请将其删除。

答案 6 :(得分:2)

我刚遇到这个问题。

我尝试了以上所有内容,但只有这样才有效:

  • 删除解决方案的.pdb文件。
  • 删除有问题的.obj文件(报告的文件不同步)

构建解决方案。

这解决了我前进的所有版本的问题。

答案 7 :(得分:1)

这就是我在Visual Studio 2010中解决问题的方法:

1)更改“解决方案配置”'来自" Debug"的选项到"发布"

2)开始调试

3)停止调试并切换“解决方案配置”'选项返回"调试"

这对我有用。第3步是可选的 - 当我将其更改为" Release"但我想改回来。

答案 8 :(得分:1)

我的解决方案:

我在新的解决方案文件中包含了来自不同解决方案的现有项目。

我没有注意到在重建现有项目时,它将最终输出放入新解决方案的输出目录中。我定义了一个链接器路径来查看OLD解决方案的输出目录。

切换我的项目以在新解决方案的输出目录中搜索为我解决了这个问题。

答案 9 :(得分:1)

我遇到了这个问题,事实证明我将我的控制台应用程序作为Windows应用程序运行。将输出类型切换回控制台可以解决问题。

答案 10 :(得分:1)

我遇到了同样的问题。为了解决这个问题,我使用“发布模式”在VS2013中进行调试。这对我来说已经足够了,因为我正在使用节点js \ c ++ addon。

答案 11 :(得分:1)

我的问题是我的解决方案中有两个项目。第二个是用于调用第一个的测试项目。我从bin文件夹的发布文件夹中选择了引用的路径。

所以,每当我对第一个项目的代码进行更改并重建它时,它都会更新调试文件夹中的dll,但调用项目指向release文件夹,给我错误,&#34 ;源文件与模块构建时不同。"

一旦我在release文件夹中删除了对主项目的dll的引用并将其设置为debug文件夹中的dll,问题就消失了。

答案 12 :(得分:1)

在Visual Studio 2017中删除已解决此问题的隐藏.vs文件夹。

答案 13 :(得分:1)

卸载包含导致错误的文件的项目。

重新加载项目。

固定

答案 14 :(得分:0)

如果您尝试更改不属于项目的源文件,也会发生此错误。

我正在从我的另一个项目的.dll调试一个方法,其中Visual Studio非常有用地加载了源代码,因为.dll已经构建在同一台机器上,它知道源的路径。显然,除非重建引用的项目,否则更改此类文件不会执行任何操作。

答案 15 :(得分:0)

的解决方案: -  问题是:- 如果您的某些项目在解决方案中,请参考其他一些项目, 那么有时一些项目的dll,无论何时构建解决方案,都不会自动更新, 一些项目将有以前的构建dll,而不是最新的dll

您必须手动将最新构建项目的dll复制到引用项目

答案 16 :(得分:0)

有时使用Visual Studio进行调试,但是由IIS服务时,会出现此问题。 (由于某些复杂的原因,我们必须以这种形式进行开发,这与原始开发人员如何设置此项目有关。)

当我更改文件并重建时,很多时间都可以修复它。我知道这听起来很愚蠢,但是我只是想调试一些代码,以查看为什么一段时间以来没有更改它为什么做得很奇怪,所以我尝试了此页面上的许多方法,但是通过更改可以解决此问题文件。

答案 17 :(得分:0)

就我而言,@ Eliott的答案不起作用。 为了解决这个问题,我有从项目中排除/包含我的缺陷文件,还有清理重建解决方案。

执行这些操作后,将还原上次修改的文件和调试器。

我希望有帮助。

答案 18 :(得分:0)

检查您在Matlab中使用mex()指向的位置是否正确(包含lib和obj文件,这些文件被修改为您在Visual Studio中编译库的最后日期)。

如果不是这样的话:

确保以节省.lib文件的模式编译Visual Studio:

  1. 属性 - >配置属性 - >一般 - >配置类型 - >静态库

  2. 属性 - >配置属性 - >一般 - >目标扩展名= .lib(而不是exe)

  3. 确保输出和中间目录与

    中的Matlab目录匹配
    1. 属性 - >配置属性 - >一般 - >输出目录
    2. 属性 - >配置属性 - >一般 - >中级目录

答案 19 :(得分:0)

调试 - >开始没有调试。

此选项对我有用。希望这有帮助!

答案 20 :(得分:0)

在Visual Studio 2015中,使用C ++,the source file is different from when the module was built问题的解决方法是

  • 重新启动Visual Studio。

答案 21 :(得分:0)

  1. 删除所有断点。
  2. 重建。
  3. 完成

答案 22 :(得分:0)

我也经历过这一点。我只是打开项目中的obj文件夹,然后打开调试文件夹删除.pdb文件,这就是全部。

答案 23 :(得分:0)

我知道这是一个老问题,但我遇到了同样的问题,并希望在此处发布以防万一。我有一台新电脑,IT部门将我的旧电脑与新电脑合并。当我设置TFS时,我将一个不同于我之前使用的本地路径映射到另一个内部驱动器。旧路径仍然存在于我硬盘上的合并数据中,所以我仍然可以构建和运行。我的IIS路径也指向旧目录。一旦我将IIS更新到正确的路径,我就可以调试就好了。我还删除了旧目录以获得良好的衡量标准。

答案 24 :(得分:0)

我遇到了同样的问题,我在这里发布的其他答案中遵循了大部分指导,似乎没有什么对我有用。

我最终打开了IIS并为我的Web应用程序回收了应用程序池。我有IIS版本8.5.9600,我右键单击我的Web应用程序,然后:部署>回收>回收应用程序池>行。

这似乎已经解决了,断点现在正如预期的那样受到打击。我认为这样做以及删除bin和obj文件夹有助于我的情况。

祝你好运!

答案 25 :(得分:0)

我的问题是我在项目中有一个web服务,我改变了构建路径。

恢复默认构建路径解决了我的问题。

答案 26 :(得分:0)

我使用的是Visual Studio 2013,我在源代码管理下有一个现有的项目 我从源代码管理中下载了一个新副本到新目录 在对新副本进行更改后,构建时我收到了有问题的错误。

我的解决方案:
1)打开Documents\IISExpress\config\applicationhost.config
2)将带有目录的virtualDirectory节点更新为新副本并保存。