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

问题描述 投票:0回答:3

最近发布的.NET工具似乎支持在PDB中嵌入C#,这应该会改善进入第三方等的体验。运行csc /?

,我可以清楚地看到/embed选项:“Embed PDB 中的所有源文件。”

但是,csproj 中似乎没有任何方法可以指定这一点。此外,似乎没有任何规定可以将任意开关传递给编译器,我将使用它来手动传递 /embed。

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

c# .net msbuild roslyn csproj
3个回答
15
投票
现在有一个正确的 MSBuild

EmbedAllSources

 属性
:

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

从我在本地观察到的情况来看,它的行为与提到的

EmbedFiles

目标相同。


6
投票
看起来 roslyn 任务应该通过

EmbeddedFiles Item Group 支持它们,将其添加到您的 .csproj:

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

...这基本上就是

/嵌入选项的作用

您可能还需要提供一个

SourceLink

 json 文件
,以连接 PDB 中的源,不确定会自动发生。


0
投票
我在运行 Teamcity 管道时遇到了这个问题,我在相关项目文件中将

DebugType

 标签更改为 
portable
 。由此可以确保您的项目配置为在编译期间生成 PDB 文件。

<PropertyGroup> <DebugType>portable</DebugType> </PropertyGroup>
    
© www.soinside.com 2019 - 2024. All rights reserved.