尽管使用 DebugType=None,Visual Studio 发布仍生成 .pdb 文件

2023-11-23

我正在使用以下发布配置文件从 Visual Studio 中发布控制台应用程序:

<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PublishProtocol>FileSystem</PublishProtocol>
    <Configuration>Release</Configuration>
    <Platform>x64</Platform>
    <TargetFramework>netcoreapp5.0</TargetFramework>
    <PublishDir>bin\Release\netcoreapp5.0\publish\</PublishDir>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
    <SelfContained>False</SelfContained>
    <PublishSingleFile>True</PublishSingleFile>
    <PublishReadyToRun>True</PublishReadyToRun>
    <IncludeNativeLibrariesForSelfExtract>True</IncludeNativeLibrariesForSelfExtract>

    <DebugType>none</DebugType>
    <DebugSymbols>false</DebugSymbols>
  </PropertyGroup>
</Project>

我的目标是不在发布输出文件夹中发出任何 .pdb 文件(调试符号)。
这并不完全按预期工作。

控制台应用程序项目的 .pdb 文件未按预期生成,但由于某种原因生成了它引用的业务逻辑项目的调试符号。这是一个错误吗?

我可以通过向业务逻辑库的项目文件添加条件语句来解决这个问题,但这是我想避免的,因为我认为发布应用程序的所有相关信息都应该驻留在发布配置文件中。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
   <DebugType>none</DebugType>
   <DebugSymbols>false</DebugSymbols>
</PropertyGroup>

<DebugType>none</DebugType><DebugSymbols>false</DebugSymbols>只会阻止当前项目的生成pdb文件。如果您的主项目引用了第二个项目,这些节点将不会阻止第二个项目的pdb文件在主项目中。这是这样设计的。

And如果你想阻止引用的项目pdb文件正在生成到主项目的发布文件夹中,您应该另外使用此节点:

<AllowedReferenceRelatedFileExtensions>*.pdb</AllowedReferenceRelatedFileExtensions>

Solution

将这些添加到您的pubxml file:

<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
<AllowedReferenceRelatedFileExtensions>*.pdb</AllowedReferenceRelatedFileExtensions>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽管使用 DebugType=None,Visual Studio 发布仍生成 .pdb 文件 的相关文章

  • 链接到ntdll.lib并调用ntdll.dll内部的函数

    我最近正在对私有 API 进行一些研究 我尝试调用诸如NtOpenFile在 ntdll dll 中LoadLibrary and GetProcAddress在运行时 幸运的是 它成功了 今天早上我在电脑上进行了文件搜索 发现ntdll
  • 是否可以在 Visual Studio 2008 和 Visual Source Safe 6.0 中使用 WinMerge?

    我想在解决方案资源管理器中使用 WinMerge 作为 VS2008 内的默认比较工具来代替 比较 上下文菜单项 这可能吗 我正在寻找一个快速替代当前乏味差异工具的工具 我只是更喜欢 WinMerge 我对进入文件夹资源管理器并在那里进行比
  • XmlUpdate 任务未更新我的 XML 文件

    我在 MSBuild 脚本中有以下任务
  • 如何使用 AssemblyInfo 任务更改程序集版本号?

    我正在尝试自动化为所有 DLL 设置版本的过程 在花了一些时间后我开始了解AssemblyInfo最有可能实现的任务 所以我继续安装它 特别是版本1 0 51130 0 安装后我手动添加了Import标签 通过卸载每个项目 Assembly
  • 如何使用 MSBuild 构建 Visual Studio 安装项目

    我正在尝试使用 MSBuild 使用以下文章构建 Visual Studio 安装项目 http msdn microsoft com en us library ms404859 aspx https web archive org we
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • 在未安装 Qt VS Tools 的情况下以 Qt/MsBuild 格式编译 Qt 项目

    我在 Visual Studio 中有很多 Qt 项目 使用新的 Qt MsBuild 格式 https blog qt io blog 2018 02 16 qt visual studio improving performance 由
  • VS 2010:如何让“下一个选项卡”、“上一个选项卡”键盘快捷键起作用? [复制]

    这个问题在这里已经有答案了 如何在 Visual Studios 2010 中使用 下一个选项卡 上一个选项卡 键盘快捷键 有关我需要的功能的更准确描述 请参阅 firefox chrome etc 以及它们如何使用 ctrl pgdn 和
  • 如何最大化 Visual Studio 面板?

    有没有办法快速最大化 然后恢复 Visual Studio 2010 面板 例如 我想暂时最大化输出窗口或单元测试结果窗口 在 Eclipse 中 我只需双击窗口选项卡 但在 VS 中 这会取消窗口的停靠 所需的行为是 双击以最大化窗口 然
  • Visual Studio 2008 中的外部编辑器

    有没有办法为 VS2008 设置外部编辑器集成 我的意思是 当我在解决方案资源管理器中双击 CPP 文件时 它应该在外部编辑器中打开 而不是在内部 VS 编辑器中打开 为了简单起见 假设我希望它在 Notepad 中打开文件 或者使用 No
  • 使用 Visual Studio 10 Express 编译 openldap

    我的任务是使用 Visual Studio 为 Windows 编译 openldap 我很乐意在 POSIX 环境中进行配置 gt make gt make install 但我从未使用过 VS 并且不确定如何使用 openldap 源
  • 使用 MSBuild Web 部署到服务器

    我在 VS 2012 项目中设置了发布配置文件 当我在 VS 中右键单击该项目 选择 发布 并单击 发布 按钮时 它会使用 发布配置文件 中提供的设置将项目发布到服务器 当我使用 msbuild 和命令行时 使用以下语法 msbuild e
  • 编译器特定的内存初始化

    有没有办法保证整个程序中某些对象的静态对象初始化顺序 我有内存分配器 我希望将其作为程序中的第一件事进行分配 因为它们将在整个程序的其他地方使用 并且我想使用这些分配器来分配所有后续内存 我知道这可能是特定于编译器的 因为我不相信 C 标准
  • Visual Studio 速度慢,与 SQMClient 有关吗?

    Visual Studio 开始工作速度比平时慢 在检查附加组件并进行修复后 速度也一样慢 我使用进程监视器来检查发生了什么 发现很多与 SQMClient 相关的事情正在发生 据我所知 这是 Microsoft 客户反馈计划的一部分 我没
  • 当向数据库表添加一列时,如何让 datagridview 显示更改?

    我在 Visual Studio 的项目中创建了一个数据集 该数据集指向我的数据库中的一个表 然后将 datagridview 控件绑定到它 现在我打开数据库并向数据库中的表添加另一列 然后我打开数据集并更新其配置以包含更改 然后我想更新
  • URL 的正则表达式

    我已经编写了正则表达式来验证 URL 它可以是这样的 example com www example com http www example com http www example com https www example com h
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 维护 VS Test Project 中单元测试方法之间的上下文

    我想按顺序运行以下单元测试 使用随机数字的名称 密码等创建新客户 检索刚刚创建的客户并断言其属性包含相同的随机数 对同一用户调用 ForgotPassword 函数 并使用相同的随机数作为用户名 清楚地看到 我需要生成一次随机数 并在 3
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 禁止显示“资源名称不是有效标识符”

    我有一个包含 5000 多个资源字符串的项目 几乎所有的标识符中都有句点 我们正在切换到自动生成强类型类 当然 由于周期的原因 我们看到了几千条警告 资源名称 blah 不是有效的标识符 我知道不是 生成器将句点更改为下划线 一切都很好 我

随机推荐