Visual Studio 尽管使用 DebugType=None publish 生成 .pdb 文件
Visual Studio publish generates .pdb file despite using DebugType=None
我正在使用以下发布配置文件从 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>
解决方案
将这些添加到您的 pubxml
文件中:
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
<AllowedReferenceRelatedFileExtensions>*.pdb</AllowedReferenceRelatedFileExtensions>
我正在使用以下发布配置文件从 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>
解决方案
将这些添加到您的 pubxml
文件中:
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
<AllowedReferenceRelatedFileExtensions>*.pdb</AllowedReferenceRelatedFileExtensions>