为什么 Visual Studio 2022 在为调试构建设置设置时在发布构建中构建我的项目?

问题描述 投票:0回答:3

我正在尝试调试 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 加载它,我可以在其中设置断点并单步执行汇编代码。

enter image description here

enter image description here

visual-studio visual-studio-debugging visual-studio-2022
3个回答
4
投票

csproj 文件中的 Optimize 属性设置为 true。将其更改为 false。


2
投票

在您的项目文件中删除或注释以下行:

<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>

0
投票

涉及 Optimize 属性的答案对我不起作用(我将所有内容设置为 false,但它仍然无法在调试中运行)。我在这里找到了解决方案:

https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-set-debug-and-release-configurations?view=vs-2022#change-the-build-configuration

基本上,我在一个解决方案中拥有三个项目,无论出于何种原因(我已经超过 3 年没有处理过这个问题了,所以这可能是从 VS 2019 到 VS 2022 的一个问题)我在发布时设置了两个项目在构建>配置管理器设置中。按照这种方式设置调试终于解决了。我通常通过工具栏进行操作,但没有效果,我不得不使用配置管理器。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.