使用新的csproj在PDB中嵌入C#源代码

时间:2017-03-10 09:07:11

标签: c# .net msbuild roslyn csproj

最近发布的.NET工具似乎支持embedding C# in PDBs,这可以改善步入第三方的经验等。运行csc /?,我可以清楚地看到/ embed选项:“将所有源文件嵌入PDB中。”

但是,似乎没有任何方法可以在csproj中指定它。更重要的是,似乎没有任何规定将任意开关传递给编译器,我将用它来手动传递/嵌入。

任何人都可以确认我没有错过任何内容,并且目前缺乏对/ embed的构建支持吗?这是否有问题(如果不是,它会去哪里)?任何建议的解决方法也将受到赞赏。

2 个答案:

答案 0 :(得分:5)

看起来roslyn任务应该通过EmbeddedFiles Item Group支持它们,方法是将其添加到.csproj中:

<Target Name="EmbedSources" BeforeTargets="CoreCompile">
   <ItemGroup>
      <EmbeddedFiles Include="@(Compile) " />
   </ItemGroup>
</Target>

...基本上是/embed option does

您可能还需要提供SourceLink json file来连接PDB中的来源,不确定是自动发生的。

答案 1 :(得分:5)

现在有一个合适的MSBuild EmbedAllSources property

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <EmbedAllSources>true</EmbedAllSources>
    [...]

从我在本地观察到的情况来看,它的行为与提到的EmbedFiles目标相同。