我在Visual Studio 2015的表达式评估程序中遇到了一个问题"表达式评估程序中的内部错误",经过一些调查我发现这是由使用加载的程序集引起的反射。这个程序集不会抛出任何异常,但在此之后,vs exp计算器将失败。 这不是我加载的唯一组件,有一些好的工作组件不会影响评估者。
要解决这个问题,我必须检查菜单>选项>调试>使用托管兼容模式'但这会禁用编辑&继续'功能,我该怎么办?
观察者集会的属性:
谢谢!
答案 0 :(得分:68)
这听起来像表达式评估程序中的错误。为了更好的解决方法,请检查"使用旧版C#和VB表达式评估程序"而不是检查"使用托管兼容模式"。这样您就可以继续使用“编辑并继续”以及最近几个版本中添加的其他功能。
就表达式评估器"中的"内部错误而言,您可以通过转到帮助 - >打开问题吗?发送反馈 - >报告一个问题?这将有助于我们在将来的版本中解决问题。
答案 1 :(得分:28)
延伸 Patrick Nelson 提供的解决方案。对于Visual Studio 2015+,查询步骤如下。
转到工具 - >的选项
并在选项下选择调试 - > 常规并向下滚动以查找 ...旧版C#表达式.. 选项:
此处提供了更多信息:
Switching to Managed Compatibility Mode
注意:切换到传统模式时也会出现一些严重的缺陷。特别是实现的接口的运行时反射几乎变得不可能或非常不方便。还有其他反射方法会抛出错误。
答案 2 :(得分:3)
对我来说,检查“使用托管兼容模式”选项是否有效。当我将鼠标悬停在变量上而不是属性和值
时,我也看到了问号答案 3 :(得分:1)
在我的情况下,我试图评估List<>上的lambda表达式并有这样的错误(“表达式评估程序中的内部错误”)。我使用的是VS2015,因此允许使用lambda表达式。事实证明表达式评估者缺乏Linq库。我添加了
using System.Linq;
到我现在的班级,瞧! Lambda评估过。
答案 4 :(得分:1)
答案 5 :(得分:1)
我通过转到以下方式重置我的visual studio设置解决了这个问题:转到:工具 - >导入和导出设置并选择重置为默认设置
答案 6 :(得分:1)
我终于弄清楚是什么在我的 Visual Studio 中造成了这个问题!
快速修复是从“Documents/Visual Studio xx/Visualizers”文件夹中删除调试对象收藏夹并重新启动 Visual Studio。
当您在调试器中“固定”一个变量时,Visual Studio 会为其保存一个“最喜欢的”json 对象。
似乎在 Visual Studio 中存在一个错误,它破坏了一些本质上是动态的子变量的“收藏夹”(虽然不完全确定条件)。
答案 7 :(得分:0)
检查您对class User < ApplicationRecord
include Merit
has_merit
has_many :activities, dependent: :destroy
has_many :locations, as: :locationable
has_many :active_relationships, class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :passive_relationships, class_name: "Relationship", foreign_key: "followed_id", dependent: :destroy
has_many :followers, through: :passive_relationships, source: :follower
def follow(other_user)
following << other_user
end
def unfollow(other_user)
following.delete(other_user)
end
def following?(other_user)
following.include?(other_user)
end
class << self
def find_for_verfied_token_response(auth,provider,access_token)
user = find_or_create_by(uid: auth['id'])
if provider == "facebook"
user.profile_picture = auth['picture']['data']['url']
elsif provider == "google_oauth2"
user.profile_picture = auth['picture']
end
user.email = auth['email']
user.full_name = auth['name']
user.gender = auth['gender']
user.provider = provider
user.access_token = access_token
puts(user)
user.save!
user
end
def save_api_key(email,uid,api_key)
user = User.where(email: email, id: uid).first
user.api_key = api_key
user.save!
user
end
end
end
属性的使用情况;我在VisualStudio 2017 15.5中找到了一个最小的案例,并将其发布为here。
在此特定情况下,表达式计算器(EE)崩溃与应用于覆盖同名字段的属性的[DebuggerBrowsable]
属性相关。这将占人们在那里遇到的案例的一些百分比,但在修复之前无法知道有多少是由于这个特定问题所致。
完整且完整的演示示例显示在图像中(并包含在下面以便进行测量)
图像中代码的机器可读副本:
[DebuggerBrowsable]
答案 8 :(得分:0)
在我的情况下,我在2个不同的文件夹中有2个相同的dll文件(似乎,一个dll不正确)。删除.dll和重建解决方案解决了我的问题。
答案 9 :(得分:0)
我在VS2019中遇到了同样的问题。我最终删除了我的Documents / Visual Studio 2019文件夹。希望有一天能对某人有所帮助。花了我一天的时间。
PS。可能不需要删除所有项目,当然也不需要删除您的项目(如果它们在其中),但是就我而言,其中的所有内容都是由VS自动生成的。
我当然尝试了这里提到的所有解决方案,甚至重新安装VS都不起作用。将该类重构为另一个名称是“触发器”,它使我认为尽管清理了符号,但仍然没有任何缓存。