在 Visual Studio 代码中调试 nuget
debug nuget in Visual Studio Code
- 我有一个生成 nuget N 的项目 A。
- 我有一个使用 N 的项目 B。
- 我有 B 的调试配置,即我可以单步执行 B 的代码。
调试B的时候我也想单步调试A的代码,但是这样不行
因为我自己从 A 构建 N,我可以生成一个 symbols
包 and/or 一个 pdb
文件,所以我认为我确实拥有所有需要的东西。我只是不知道如何连接这些部分以允许我从 B 调试会话中调试 A 代码。
你检查了吗?
https://github.com/dotnet/sourcelink#githubcom-and-github-enterprise
您需要将其添加到您的 csproj 文件中。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<!-- Optional: Publish the repository URL in the built .nupkg (in the NuSpec <Repository> element) -->
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Optional: Embed source files that are not tracked by the source control manager in the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<!-- Optional: Build symbol package (.snupkg) to distribute the PDB containing Source Link -->
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
<ItemGroup>
<!-- Add PackageReference specific for your source control provider (see below) -->
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
</ItemGroup>
</Project>
在我的 csproj
文件(A 和 B)中设置 <DebugType>portable</DebugType>
就成功了。
我什至不需要从 A 的任何地方复制 pdb
文件;它只是自己工作。
可能这只是由于我当前的设置:我有一个项目 B 的 nuget.config
,其中指定了项目 A 的路径,因为 nuget N 是在那里构建的。因为它是项目 A 的文件夹,所以它的 pdb
也在那里(在 bin/Debug/frameworkVersion 中)。可能 VScode 只是检查从中检索 nuget 的文件夹以及所有子文件夹。
无论如何,如果这对不同的设置不起作用,似乎只需将我要调试的代码(因此,项目 A 的代码)的 pdb
复制到输出中就足够了我当前正在调试的项目(项目 B)的文件夹。这可以通过将 pdb
添加到 nuget 以及相应的 target
以将 pdb
复制到输出目录来自动实现。
然后,如果 just my code
被禁用,pdb
文件将自动加载。
- 我有一个生成 nuget N 的项目 A。
- 我有一个使用 N 的项目 B。
- 我有 B 的调试配置,即我可以单步执行 B 的代码。
调试B的时候我也想单步调试A的代码,但是这样不行
因为我自己从 A 构建 N,我可以生成一个 symbols
包 and/or 一个 pdb
文件,所以我认为我确实拥有所有需要的东西。我只是不知道如何连接这些部分以允许我从 B 调试会话中调试 A 代码。
你检查了吗?
https://github.com/dotnet/sourcelink#githubcom-and-github-enterprise
您需要将其添加到您的 csproj 文件中。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<!-- Optional: Publish the repository URL in the built .nupkg (in the NuSpec <Repository> element) -->
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Optional: Embed source files that are not tracked by the source control manager in the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<!-- Optional: Build symbol package (.snupkg) to distribute the PDB containing Source Link -->
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
<ItemGroup>
<!-- Add PackageReference specific for your source control provider (see below) -->
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
</ItemGroup>
</Project>
在我的 csproj
文件(A 和 B)中设置 <DebugType>portable</DebugType>
就成功了。
我什至不需要从 A 的任何地方复制 pdb
文件;它只是自己工作。
可能这只是由于我当前的设置:我有一个项目 B 的 nuget.config
,其中指定了项目 A 的路径,因为 nuget N 是在那里构建的。因为它是项目 A 的文件夹,所以它的 pdb
也在那里(在 bin/Debug/frameworkVersion 中)。可能 VScode 只是检查从中检索 nuget 的文件夹以及所有子文件夹。
无论如何,如果这对不同的设置不起作用,似乎只需将我要调试的代码(因此,项目 A 的代码)的 pdb
复制到输出中就足够了我当前正在调试的项目(项目 B)的文件夹。这可以通过将 pdb
添加到 nuget 以及相应的 target
以将 pdb
复制到输出目录来自动实现。
然后,如果 just my code
被禁用,pdb
文件将自动加载。