将pdb文件包含到我的nuget(nupkg)文件中

mon*_*_za 34 c# msbuild visual-studio nuget

我正在使用MSBuild生成我的nuget包.

是否需要设置任何命令,允许它包含我的.pdb文件,以便在调试时插入源代码?

我不希望源文件包含在拉入nuget包的项目中.

Pau*_*her 32

如果您使用的是VS2017 15.4或更高版本,则可以在项目文件中定义MSBuild属性

<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
Run Code Online (Sandbox Code Playgroud)

这在NuGet#4142中讨论

  • 我已经在我的主 PropertyGroup 中 - 请查看 https://github.com/phatcher/CsvReader 以获取完整示例 (2认同)
  • 对于我的生活,我无法让它发挥作用.我正在使用VS 2017 15.5.6.没有nuspec文件和以下post构建事件`nuget pack $(ProjectPath)-Prop Configuration = $(ConfigurationName)` (2认同)

Jef*_*ler 28

虽然它可能对调试没有帮助,但包含.pdb文件以使堆栈跟踪具有行号绝对有用.

在nuspec文件中,包含一个<files>元素(子节点<package>,兄弟节点<metadata>).这就是我在其中一个类库中的内容:

<files>
    <file src="bin\$configuration$\$id$.pdb" target="lib\net452\" />
</files>
Run Code Online (Sandbox Code Playgroud)

确保目标与.dll文件放在包中的文件夹相同.

  • 如果您还希望将 *\*.dll* 文件包含在 NuGet 包中,请确保为它们添加“file”元素。 (2认同)

Jos*_*man 20

使用新的 csproj 格式创建 NuGet 变得非常容易,因为 MSBuild 完成了大部分工作。

为了包含您的pdb文件,您只需输入标签

<IncludeSymbols>true</IncludeSymbols>

在您正在打包的项目的 csproj 文件中的属性组中。这将创建一个额外的.symbols.nupkg包,您可以将其发布到您的(调试)提要。

  • 这当然是本地调试的简单解决方案。我建议任何使用旧 .csproj 格式的人升级它以使用新格式。 (3认同)
  • 有史以来最好的答案。 (3认同)
  • 这应该被标记为正确答案。它适用于 Visual Studio 2019。 (2认同)

far*_*121 7

这也可以通过 dotnet CLI 完成。

通过包装

dotnet pack --include-symbols --include-source [path-to-project-here]
Run Code Online (Sandbox Code Playgroud)

我对我生成的包进行了全面调试