visual studio 2013局部变量未在调试器中显示

时间:2016-06-27 23:11:08

标签: vb.net visual-studio-2013 visual-studio-debugging

我有一个用VB编写的带有一些C#组件的解决方案。该解决方案使用来自2个外部源的一些库。我已经在这个项目上工作了几个月没有问题。我无法确定我为更改系统或配置所做的具体操作。我只是在处理代码,从一组旧的库调用转换到新的库调用。新的库调用需要完全重写,所以我更改代码的各个部分并测试到那一点。截至周五早上的Visual Studio 2013调试器将不再识别或显示此解决方案中的本地变量。 “本地”窗口中显示的唯一内容位于“我”下。代码确实有效,我将其写入文本日志文件以确认某些点的变量值,但调试器已经失明。当我将任何这些局部变量添加到Watch时,响应是“未声明。由于其保护级别,它可能无法访问。”

到目前为止我采取的步骤没有取得永久的成功:

  • 在线观看并尝试了一些我没有成功的比赛
  • 删除了bin和obj文件夹,并使用no重建了解决方案 成功
  • 从头开始重新创建解决方案,复制到基础文件并重建 解决方案和项目(工作几个小时),直到我做了 重建项目和问题再次出现
  • 更新为打包5但没有成功

我打开了旧项目并进行了检查。调试器运行得很好并显示变量。这显然是在重建过程中发生的事情。

非常感谢任何协助。

由于

更新: 让我试着更清楚地解释一下情况。

我有一个我已经建立的应用程序并且正在向一些客户销售。版本1已安装并在多个位置运行。它是用VB编写的,并使用一些较旧的COM库进行特定的集成过程。

供应商正在淘汰COM库。他们的新库在C#中。

我创建了整个应用程序(解决方案)的新副本并导入了新的C#库。我一直在用新代码的代码替换旧代码。我重新编译了解决方案,一切都在调试中运行良好。

与新调用一起使用的对象完全不同,并且文档有限,因此我更新了一段代码并测试了该点。每次“保存所有文件”时,重建项目并测试更改。几天都工作正常。星期五早上,我开始进行更多更改并得到一个奇怪的错误。系统没有为某个变量获得适当的值。当我在WATCH窗口中检查它时,调试器说它无法评估它。我发现有什么东西挂了,所以我关闭了所有东西并重新启动了我的机器。当我稍后再试一次时,同样的问题。

几个小时没有成功后我退出VS,将文件夹重命名为“OLD”并从旧版本重新创建解决方案。一切都很好看。我开始进行更改和测试。每次我进行重建,一切看起来都很好,直到最后一次改变。我又来了。

代码工作正常,直到我更新了。唯一的问题是调试器窗口无法正常工作。如果变量在Sub之外的Class级别声明,则可以看到它们。调试器盲目的唯一变量是运行Sub中的局部变量。

我找了这个问题的其他人,只发现了一些项目。我尝试了这些建议但没有快乐。我不得不临时定义sub之外的变量,所以我可以在调试时看到它们。

我参加VS 2013 Update 5。

我是否需要转到VS 2015来解决这个问题?

再次感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

我假设自上次重建工作以来你没有更改visual studio的版本。

recreated solution from scratch, copied over base files and rebuilt solution and project (which worked for a few hours), until I did a rebuild project and problem appeared again

基于此,您从头开始创建它,一切正常,直到您进行重建权利?但是,您仍在复制基本文件,并且自上次重建没有弄乱本地窗口以来,您有新的库调用。所以其中一个几乎肯定是罪魁祸首。

由于库调用似乎是根据你的帖子开始改变的东西。如果你回到旧代码并进行重建,它会修复它吗?假设是这样,将库调用一次放回一个,直到它中断。

如果回到旧代码无法修复它,请从头开始创建旧代码并复制基础文件并重建。如果修复了它,请一次添加一个新的库调用,并在每个库调用之后重建,直到它中断。

如果这也没有解决,那么你需要深入研究其他可能发生的变化。

您正在复制基本文件,因此如果可以,请将这些文件排除在外: 您是否能够使用占位符而不是基本文件或某些不一定用作成品的东西,但是这将允许您再次调试,重建和调试以查看问题是否与其中一个相关?检查基本文件上的日期,并确保自上次重建工作以来它们没有更改。

你可以同时做的事情可能是让同事在他们的机器上进行重建,看看是否会出现同样的问题。它(几乎)完全消除了你的配置/程序损坏问题的可能性。或者,有一些免费的vb.net编译器在线,你可以上传文件和代码。我不确定这对你来说是否实用(由于你的程序的组件和/或数据的敏感性)或者没有尝试过任何有C#代码的地方,但我不认为这将是一个问题。