我正在尝试调试 Web 项目中的程序集。 Web 项目有对程序集的引用。我有程序集的代码。我已将目标框架为.Net Standatd 2.0的程序集项目设置为调试构建,如下所示。 我将生成的.dll和.pdb文件复制到in\debug Web 项目的 et50 文件夹(目标为 .NET 5.0)。在调试 Web 项目期间,我注意到在模块窗口中 Visual Studio 将程序集加载为“优化”和“跳过加载”符号。 dll 和 .pdb 文件具有相同的时间戳。我不确定为什么程序集的符号没有被加载。
然后我使用了这个 Assembly Information 工具,它显示 dll 已发布并已优化。那么这就解释了为什么 VS 会这样加载它?
我的问题是为什么它被构建为发布版并进行优化? 我的目标是让 VS 加载它,我可以在其中设置断点并单步执行汇编代码。
csproj 文件中的 Optimize 属性设置为 true。将其更改为 false。
在您的项目文件中删除或注释以下行:
<Optimize>True</Optimize>
之前的例子:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<Optimize>True</Optimize>
<DebugType>portable</DebugType>
<DefineConstants>$(DefineConstants);DEBUG</DefineConstants>
</PropertyGroup>
之后:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<!--<Optimize>True</Optimize>-->
<DebugType>portable</DebugType>
<DefineConstants>$(DefineConstants);DEBUG</DefineConstants>
</PropertyGroup>
涉及 Optimize 属性的答案对我不起作用(我将所有内容设置为 false,但它仍然无法在调试中运行)。我在这里找到了解决方案:
基本上,我在一个解决方案中拥有三个项目,无论出于何种原因(我已经超过 3 年没有处理过这个问题了,所以这可能是从 VS 2019 到 VS 2022 的一个问题)我在发布时设置了两个项目在构建>配置管理器设置中。按照这种方式设置调试终于解决了。我通常通过工具栏进行操作,但没有效果,我不得不使用配置管理器。