如何指定/ debug:从csproj中嵌入?

时间:2017-03-14 23:34:55

标签: c# .net-core roslyn visual-studio-2017

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

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

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

这是我的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>

1 个答案:

答案 0 :(得分:7)

您可以使用<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个文件,因此您可以在较大的项目中指定一次常用内容。