如何从 csproj 指定 /debug:embedded?

How can I specify /debug:embedded from csproj?

我编写了一个 dotnet 核心库,它是使用 NuGet 打包的。我想在 dll 中嵌入调试信息(如果可能的话还有源代码)。而不是单独的符号包。

根据 https://github.com/ctaggart/SourceLink 看来,通过向编译器指定一些开关直接调用编译器时,这是可能的。我不明白 csproj 文件与编译器调用的关系。

如何从 csproj 中指定标志 /debug:embedded?

这是我的 csproj:

    <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
    <AssemblyName>KamailioApi</AssemblyName>
    <PackageId>KamailioApi</PackageId>
    <PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
    <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
    <!-- don't change this we hack it in the TeamCity Build-->
    <Version>1.0.1</Version>
    <PackageVersion>1.0.1-beta</PackageVersion>    
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
    <PackageReference Include="System.Runtime.Serialization.Formatters" Version="4.3.0" />
    <PackageReference Include="System.Xml.XmlDocument" Version="4.0.1" />
    <PackageReference Include="system.xml.xpath.xmldocument" Version="4.0.0" />
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
    <PackageReference Include="System.Net.Requests" Version="4.3.0" />
  </ItemGroup>

</Project>

您可以使用 <DebugSymbols> and <DebugType> properties 执行此操作,如下所示:

<PropertyGroup>    
  <DebugSymbols>true</DebugSymbols>
  <DebugType>embedded</DebugType>
</PropertyGroup>

Here's an example of where I do it with MiniProfiler,请注意 Directory.build.props 适用于该目录级别或目录级别以下的所有 .csproj 文件,因此您可以一次性指定大型项目中的通用内容。