【问题标题】:Strange symbol in VS debugger and missing method exceptionVS 调试器中的奇怪符号和缺少方法异常
【发布时间】:2013-10-18 15:03:52
【问题描述】:

我的设置是这样的:

  • 域模型项目 => 包含我的实体。与服务器和客户端应用程序共享。

  • Server/webservices => MVC WebAPI,数据以 JSON 形式返回,使用 Json.Net 库。

  • Client => C# Winforms 应用,使用 RestSharp 和 Json.Net 库检索数据。

在说明了我的设置之后,我想声明我的设置正在运行,直到最近进行一些更改。

我已向我的一个实体(域模型项目)添加了一些新属性,修改了我的 Web 服务以利用已执行的更改,然后重新启动。好的,它起作用了,返回的 JSON 还告诉我正在正确处理新字段。

到目前为止一切顺利。现在,客户端部分。 我已经调试了从服务器接收到的 JSON,并且新数据(具有新属性)很好。 但是,当 Json.Net 尝试将数据解析为实体时,只会显示一些属性。 当我尝试用数据填充我的数据时,我得到MissingMethodException

{"找不到方法:'System.String Domain.Equipment.get_Weight()'。"}

Weight 确实是我最近的更改之一,但代码确实可以编译。

我已经尝试构建、重建、删除和添加对我的域模型项目的引用,再次构建和重建,但仍然遇到相同的异常错误。

不过,我注意到调试时出现了一个奇怪的 VS 图标,如图所示:

我对 VS2012 还很陌生,所以这可能是微不足道的。 关于那个图标的任何想法?或者为什么会发生这种情况?

如需进一步解释,请发表评论,我将进行编辑。

【问题讨论】:

  • 你试过重启vs吗? :)
  • 是的,没有结果。要重启了,我会反馈一些意见。
  • 不,重启不起作用。
  • 删除并添加库引用?是项目参考吗?一定要清洁和建造。
  • @AndreiD 感谢您的支持。在发布问题之前我已经尝试过,但我想解决方案并不遥远(请参阅我的答案以了解解决我的问题的完整“演练”)。

标签: c# .net visual-studio-2012 visual-studio-debugging


【解决方案1】:

那个奇怪的蓝色图标表示该属性受到保护。如果属性是私有的,你会得到一个停止符号。这些图标与变量 Windows 中出现的较小图标不同(挂锁表示私有,星号表示受保护)。

您可以在此处查看图标列表: http://msdn.microsoft.com/en-us/library/y47ychfe.aspx

虽然该列表不包含当您将鼠标悬停在变量上时出现的较大图标,例如您截取的蓝色图标。我实际上想知道不同的图标是否是视觉工作室中的错误。对可变窗口和上下文/树视图使用相同的图标似乎更有意义。

如果你得到一个 MissingMethodException 那么它真的意味着你正在调用一个旧版本的程序集。你 GAC 大会了吗?也许 GAC 中有一个较旧的版本,它正在接受它。

您也可以尝试回收或重新启动,以防有任何缓存的东西(例如 IIS)

【讨论】:

  • 回收是什么意思?我没有GACed它(至少我不是故意这样做的)。但如果是这种情况,为什么这只影响客户端(而不影响服务器)?
  • 我对web开发不太了解,我正在考虑回收IIS,清除任何缓存版本的程序集
  • 我会将您的答案标记为已接受,以指出“这确实意味着您正在调用旧版本的程序集”。这帮助我找到了正确的解决方案。
【解决方案2】:

以下之一(或它们的混合!)解决了我的问题:

  • 删除项目并重新添加。
  • 清洁
  • 删除binobj 文件夹(我想就是这样!)
  • 重建
  • 重启VS
  • 正在重启

我会把这个留给以后遇到同样问题的读者。

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多