首页 > 解决方案 > 调试时对象有“无法评估表达式”

问题描述

这篇文章的目的是讨论一个我觉得相当抽象的话题。不幸的是,不会有可复制的例子,但我很好奇这里是否有人以前遇到过这种情况,以及一些关于可能发生的事情的提示。希望下面所述的内容足以让您做出一个整体的想法。

在编写一些单元测试时,我注意到正在发生的事情并使测试失败。在调试时,我注意到一个对象 ,Properties由于"Could not evaluate expression"将鼠标悬停在它上面时,它基本上是空的。这会导致程序将其视为 null,从而使测试失败。

我在代码方面考虑了所有可能的原因,然后我认为这可能是 Visual Studio 的调试设置有问题,只是发现这是因为从该对象导入的程序集。

这个程序集被加载到项目中,如下所示:

<Reference Include="Connectivity.DataModel, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\..\..\..\..\..\_external\nuget\nes\Connectivity.DataModel.1.0.0\lib\netstandard2.0\Connectivity.DataModel.dll</HintPath>
</Reference>

我注意到在另一个项目中,它Connectivity.DataModel.dll被引用为 NuGet 而不是程序集。因此,我将上面的代码更改为:

<ItemGroup>
  <PackageReference Include="Connectivity.DataModel" Version="1.0.0" />
</ItemGroup>

这最终使对象Properties按预期工作。

奇怪的是现在才出现 - 所以在用第二个代码替换第一个代码之后,我运行应用程序,确保测试通过,然后决定撤消这个更改,因为理论上它应该无论如何都可以工作。在恢复到以前引用它的方式后,我惊讶地发现它仍然有效 - 基本上以前会提示我该"Could not evaluate expression"错误消息的内容,现在有效。

会发生什么?为什么在将其作为 NuGet 引用并运行一次代码后它会起作用?现在最奇怪的部分是,如果没有从 git 获取该项目的全新副本,我将无法复制该问题。

提前感谢您的任何建议!

标签: c#visual-studiodllreferencenuget

解决方案


推荐阅读