在构建时自动生成带有符号的 nuget 包
automatically generate nuget package with symbols on build
我有一个 C# 项目 (.net 6.0),我想在每次(重新)构建它时自动创建一个 nuget。
Here 它说:
To automatically run dotnet pack
when you run dotnet build
, add the
following line to your project file within <PropertyGroup>
:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
我试过了并且有效,但是没有添加任何符号(.pdb
个文件)。我该怎么做?
命令 dotnet pack --include-symbols
可用于此目的,但如何告诉 .csproj
文件使用该命令而不是 dotnet pack
?
dotnet pack --include-symbols
将生成两个 nuget 包,一个以 .nupkg
结尾,一个以 .symbols.nupkg
结尾。前者不包含 .pdb
,后者包含。我只想生成一个包含 .dll
和 .pdb
.
的文件(.nupkg
没有 .symbols
前缀的文件)
我尝试了以下方法:
- 删除
GeneratePackageOnBuild
属性
- 将目标添加到项目:
<Target Name="BuildNuget" AfterTargets="AfterBuild"><Exec Command="dotnet pack --include-symbols"/></Target>
但是现在当我运行dotnet build
时,我运行陷入无限循环:(不幸的是它是德语,但你可以看到它只是重复。)
Wiederherzustellende Projekte werden ermittelt...
Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand.
MyProject-> C:\Users\...\MyProject\bin\Debug\net6.0-windows\MyProject.dll
Microsoft (R)-Build-Engine, Version 17.0.0+c9eb9dd64 für .NET
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Wiederherzustellende Projekte werden ermittelt...
Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand.
MyProject-> C:\Users\...\MyProject\bin\Debug\net6.0-windows\MyProject.dll
Microsoft (R)-Build-Engine, Version 17.0.0+c9eb9dd64 für .NET
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Wiederherzustellende Projekte werden ermittelt...
Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand.
MyProject-> C:\Users\...\MyProject\bin\Debug\net6.0-windows\MyProject.dll
Microsoft (R)-Build-Engine, Version 17.0.0+c9eb9dd64 für .NET
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Wiederherzustellende Projekte werden ermittelt...
Here 它说:
The dotnet pack command builds the project and creates NuGet packages.
因此,如果我在构建后将 dotnet pack
作为命令,我将进入无限构建堆栈。
在同一页上列出了 nuget pack
的选项。其中之一是 --no-build
.
将目标更改为
<Target Name="BuildNuget" AfterTargets="AfterBuild">
<Exec Command="dotnet pack --no-build --include-symbols"/>
</Target>
问题已解决。
我有一个 C# 项目 (.net 6.0),我想在每次(重新)构建它时自动创建一个 nuget。
Here 它说:
To automatically run
dotnet pack
when you rundotnet build
, add the following line to your project file within<PropertyGroup>
:<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
我试过了并且有效,但是没有添加任何符号(.pdb
个文件)。我该怎么做?
命令
dotnet pack --include-symbols
可用于此目的,但如何告诉.csproj
文件使用该命令而不是dotnet pack
?
的文件(dotnet pack --include-symbols
将生成两个 nuget 包,一个以.nupkg
结尾,一个以.symbols.nupkg
结尾。前者不包含.pdb
,后者包含。我只想生成一个包含.dll
和.pdb
..nupkg
没有.symbols
前缀的文件)
我尝试了以下方法:
- 删除
GeneratePackageOnBuild
属性 - 将目标添加到项目:
<Target Name="BuildNuget" AfterTargets="AfterBuild"><Exec Command="dotnet pack --include-symbols"/></Target>
但是现在当我运行dotnet build
时,我运行陷入无限循环:(不幸的是它是德语,但你可以看到它只是重复。)
Wiederherzustellende Projekte werden ermittelt... Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand. MyProject-> C:\Users\...\MyProject\bin\Debug\net6.0-windows\MyProject.dll Microsoft (R)-Build-Engine, Version 17.0.0+c9eb9dd64 für .NET Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. Wiederherzustellende Projekte werden ermittelt... Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand. MyProject-> C:\Users\...\MyProject\bin\Debug\net6.0-windows\MyProject.dll Microsoft (R)-Build-Engine, Version 17.0.0+c9eb9dd64 für .NET Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. Wiederherzustellende Projekte werden ermittelt... Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand. MyProject-> C:\Users\...\MyProject\bin\Debug\net6.0-windows\MyProject.dll Microsoft (R)-Build-Engine, Version 17.0.0+c9eb9dd64 für .NET Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. Wiederherzustellende Projekte werden ermittelt...
Here 它说:
The dotnet pack command builds the project and creates NuGet packages.
因此,如果我在构建后将 dotnet pack
作为命令,我将进入无限构建堆栈。
在同一页上列出了 nuget pack
的选项。其中之一是 --no-build
.
将目标更改为
<Target Name="BuildNuget" AfterTargets="AfterBuild">
<Exec Command="dotnet pack --no-build --include-symbols"/>
</Target>
问题已解决。