Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VS2013运行旧代码;清理+重建还不够;删除bin+obj文件夹后,第一次重建失败,但第二次成功 原职_C#_Asp.net_Visual Studio_Visual Studio 2013_Iis Express - Fatal编程技术网

C# VS2013运行旧代码;清理+重建还不够;删除bin+obj文件夹后,第一次重建失败,但第二次成功 原职

C# VS2013运行旧代码;清理+重建还不够;删除bin+obj文件夹后,第一次重建失败,但第二次成功 原职,c#,asp.net,visual-studio,visual-studio-2013,iis-express,C#,Asp.net,Visual Studio,Visual Studio 2013,Iis Express,我正在使用Visual Studio 2013 Premium为.NET framework 4.5版构建一个ASP.NET应用程序,在调试过程中使用IIS Express。现在,我遇到了一个以前很少发生在其他项目中的问题,但在这一项目中却极为频繁: 我的代码中的更改通常没有正确编译,因此旧版本的程序是在IIS中启动的。我第一次注意到这一点时,我在一行代码中得到了一个NullReferenceException,然后在它周围添加了一个null检查,然后再次得到了相同的错误,刚才在检查发生的行中,

我正在使用Visual Studio 2013 Premium为.NET framework 4.5版构建一个ASP.NET应用程序,在调试过程中使用IIS Express。现在,我遇到了一个以前很少发生在其他项目中的问题,但在这一项目中却极为频繁:

我的代码中的更改通常没有正确编译,因此旧版本的程序是在IIS中启动的。我第一次注意到这一点时,我在一行代码中得到了一个NullReferenceException,然后在它周围添加了一个null检查,然后再次得到了相同的错误,刚才在检查发生的行中,这是异常之前发生的行号。另一个症状是,由于我认为代码版本中的差异导致缺少符号,因此不再命中断点

现在我已经在这里和MSDN上读到了关于这个问题的各种帖子,似乎很多人不时会有这样的帖子,没有人有适合每个人的解决方案

当我遇到这个问题时,执行清理/重建根本不起作用,但通常删除bin和obj文件夹就可以了。但现在发生的情况如下:

在启动调试过程F5之后,我可以看到我的断点没有被命中,所以我停止它,删除bin/obj文件夹并重新生成所有断点。这不起作用,并且总是失败,并出现许多错误,比如说,尽管IntelliSense在那里提出了名称空间,但名称空间确实存在,并且提供名称空间的程序集丢失,并且它确实位于启动项目的最终输出文件夹中,但仍然找不到名称空间;但它是在自己的project bin文件夹中创建的。。。。然后我再次重建,它会神奇地工作。计划的下一个开始做了我希望的一切。但在那之后,我已经到了第二次或第三次重新启动会再次产生问题的地步,没有断点,旧代码,我可以从删除文件夹开始。我必须补充一点,这种行为从上周开始,此后变得越来越频繁。并不是每次尝试后都要删除文件夹

所有这些当然是无法忍受的,因为在这种情况下是不可能工作的。但我不知道该怎么办。我和其他人一起工作了一年又一年,但似乎什么都不适合我

你还有其他建议吗?在某种程度上,是否有什么错误明确地导致了这种行为?尤其是第一次重建不起作用,但第二次确实起作用的部分让我感到困惑,感觉可能是我做错了什么

编辑:我现在测试了另一个场景:在第一次重建之后,我得到了关于丢失的程序集的上述错误。然后,我真的删除了对该程序集的引用,尽管如此,第二次重建现在仍然顺利进行!这怎么可能

Edit2:作为一个总结,每当我第二次尝试用我想要点击的断点运行程序时,符号将不会被加载,我必须删除bin/obj文件夹。然后我必须重建两次,在第二次工作后,启动并点击断点。但在这之后的下一次,即使我不更改代码本身的任何内容,它也不会再遇到断点!我必须重新开始

使现代化 我现在尝试以管理员的身份启动VS,并再次检查引用是否为项目引用。在批量清理整个解决方案之后,它将启动,但随后在IE中显示DataAccess项目缺少的程序集异常。然后,我删除了bin/obj文件夹并重建了一次项目。现在,我像往常一样遇到以下错误:

命名空间“MyNamespace”中不存在类型或命名空间“Business”是否缺少程序集引用

无法解析此引用。找不到程序集业务,版本=1.0.0.0,区域性=中性,processorArchitecture=MSIL。检查以确保磁盘上存在程序集。如果代码需要此引用,则可能会出现编译错误

问题是,assembly Business.dll位于MySolution\Business\bin\Debug文件夹以及最终的MySolution\Frontend\bin文件夹中,它肯定是我刚刚构建的版本。那么为什么编译器会抱怨呢?感觉构建顺序有问题,但如果我纯粹使用项目引用,情况就不应该是这样,对吗

现在,像往常一样,第二次重建工作正常,之后我可以命中一次断点。然后我添加了一条平凡的线int I=0;在代码中,在断点之后重新启动程序,它再次告诉我断点不会被命中,符号也不会被加载。然后我检查了Debug->Windows->Modules以查看

找不到或无法打开PDB文件

为了生意 和数据访问项目,而我昨天

PDB与图像不匹配

为了那些

但是,当右键单击模块中的业务项目并选择加载符号时,它会立即提示我进入项目的obj\Debug文件夹,其中有一个*.pdb`文件,该文件是在通过时间戳确认的构建中创建的。选择此文件将产生

在此文件夹中找不到匹配的符号文件

但我刚刚点击了那个文件,所以“匹配”部分肯定有问题,对吗?你有什么进一步的想法吗,因为我完全不了解这里

更新2 将Visual Studio 2013更新为Update 3后,我在删除bin/obj文件夹后执行第一次“全部重建”时收到一条额外的编译器警告:

“MySolutionPath\StartupProject\bin\Business.dll”和“MySolutionPath\Business\bin\Debug\Business.dll”中都存在类型“MyNamespace.Business.Providers.BusinessProvider”


我想知道这是否/为什么是一个问题,因为必须是VS本身将Business.dll复制到StartupProject的bin文件夹中。这可能意味着有什么值得一看的吗?

在尝试了我找到的关于此问题或类似问题的所有信息后,最后唯一能帮助我的是在本地删除整个解决方案,并再次从TFS进行彻底检查。在那之后,它又像预期的那样工作了,我仍然不知道是什么原因导致了它,因为我之前已经签入,因此我删除的版本应该与我签出的版本相同。

我只是在Windows窗体项目中遇到了类似的问题,结果发现我更改的代码在事件处理程序中,无论什么原因,它都被从设计器文件中抛出。如果添加的代码是正确的,项目将编译,但它当然不会被命中。仍然让我困惑的是,我的gridview是如何在没有这个事件的情况下进行排序的,但我记得当我编写它时,我认为它应该在不向它抛出代码的情况下工作,所以可能在某个时候,我不知不觉地以其他方式纠正了这个问题。无论如何,我希望这对任何人都有帮助

关闭解决方案。2.从项目文件夹中删除bin和obj文件夹。 3.在visual studio菜单>生成>清理解决方案中打开解决方案,生成应用程序。 运行应用程序并验证更改。如果仍然看到相同的问题,请>在UI中进行另一个小更改并重建应用程序。它很好用。
您是否作为系统管理员运行visual studio?听起来像是权限问题。@CBauer我将尝试此方法,目前正在重新启动VM,这可能需要很多时间,但我想我已经做到了。至少在80天的时间里,我没有遇到任何问题。检查你的引用:对你自己项目的引用是指向那个项目,还是指向bin文件夹中已编译的dll?它们应该指向项目。@HansKesting它们都是项目引用,通过VS添加引用对话框以这种方式添加。我想我找到了更多的信息,明天再查!您的解决方案配置经理,在构建哪些项目以获得哪些输出方面是否有问题?如果您的主项目引用了子项目业务,那么它应该获取输出。如果您得到的是重复文件,您可以告诉主项目不要复制文件,选择引用,在“属性”中查找“复制到输出”,然后选择“false”。