From 8ddcdb839681d3cd61afd963d8807ed8e603c4f4 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Mon, 19 Nov 2018 14:42:15 +1300 Subject: [PATCH 1/6] Update symbol packages guidance --- docs/standard/library-guidance/nuget.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index a53aac87a169e..16cb17d560bee 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -90,9 +90,11 @@ NuGet packages with a version suffix are considered [pre-release](/nuget/create- ## Symbol packages -Symbol files (`*.pdb`) are produced by the .NET compiler alongside assemblies. Symbol files map execution locations to the original source code so you can step through source code as it is running using a debugger. NuGet supports [generating a separate symbol package](/nuget/create-packages/symbol-packages) containing symbol files alongside the main package containing .NET assemblies. The idea of symbol packages is they're hosted on a symbol server and are only downloaded by a tool like Visual Studio on demand. +Symbol files (`*.pdb`) are produced by the .NET compiler alongside assemblies. Symbol files map execution locations to the original source code so you can step through source code as it is running using a debugger. NuGet supports [generating a separate symbol package](/nuget/create-packages/symbol-packages-snupkg) containing symbol files alongside the main package containing .NET assemblies. The idea of symbol packages is they're hosted on a symbol server and are only downloaded by a tool like Visual Studio on demand. -Currently the main public host for symbols - [SymbolSource](http://www.symbolsource.org/) - doesn't support the new [portable symbol files](https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md) (`*.pdb`) created by SDK-style projects, and symbol packages aren't useful. Until there is a recommended host for symbol packages, symbol files can be embedded in the main NuGet package. If you are building your NuGet package using an SDK-style project you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: +NuGet.org hosts its own [symbols server repository](/nuget/create-packages/symbol-packages-snupkg#nugetorg-symbol-server). Developers can use the symbols published to the NuGet.org symbol server by adding `https://symbols.nuget.org/download/symbols` to their [symbol sources in Visual Studio](/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger). + +An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you are building your NuGet package using an SDK-style project you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: ```xml From 8eed83a997726ca6e7f86601bd45eb1d391cc519 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Mon, 19 Nov 2018 14:48:45 +1300 Subject: [PATCH 2/6] Clean up --- docs/standard/library-guidance/nuget.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index 16cb17d560bee..57942a0573ceb 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -90,11 +90,11 @@ NuGet packages with a version suffix are considered [pre-release](/nuget/create- ## Symbol packages -Symbol files (`*.pdb`) are produced by the .NET compiler alongside assemblies. Symbol files map execution locations to the original source code so you can step through source code as it is running using a debugger. NuGet supports [generating a separate symbol package](/nuget/create-packages/symbol-packages-snupkg) containing symbol files alongside the main package containing .NET assemblies. The idea of symbol packages is they're hosted on a symbol server and are only downloaded by a tool like Visual Studio on demand. +Symbol files (`*.pdb`) are produced by the .NET compiler alongside assemblies. Symbol files map execution locations to the original source code so you can step through source code as it is running using a debugger. NuGet supports [generating a separate symbol package (`*.snupkg`)](/nuget/create-packages/symbol-packages-snupkg) containing symbol files alongside the main package containing .NET assemblies. The idea of symbol packages is they're hosted on a symbol server and are only downloaded by a tool like Visual Studio on demand. NuGet.org hosts its own [symbols server repository](/nuget/create-packages/symbol-packages-snupkg#nugetorg-symbol-server). Developers can use the symbols published to the NuGet.org symbol server by adding `https://symbols.nuget.org/download/symbols` to their [symbol sources in Visual Studio](/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger). -An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you are building your NuGet package using an SDK-style project you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: +An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you are building your NuGet package using an SDK-style project you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: ```xml From 86d5985ad1b0238a24f5e66b84fd783569d95c75 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 20 Nov 2018 12:12:15 +1300 Subject: [PATCH 3/6] Include note that NuGet symbol server only supports portable PDBs --- docs/standard/library-guidance/nuget.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index 57942a0573ceb..e52da855a1906 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -94,7 +94,10 @@ Symbol files (`*.pdb`) are produced by the .NET compiler alongside assemblies. S NuGet.org hosts its own [symbols server repository](/nuget/create-packages/symbol-packages-snupkg#nugetorg-symbol-server). Developers can use the symbols published to the NuGet.org symbol server by adding `https://symbols.nuget.org/download/symbols` to their [symbol sources in Visual Studio](/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger). -An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you are building your NuGet package using an SDK-style project you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: +> [!IMPORTANT] +> The NuGet.org symbol server only supports the new [portable symbol files](https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md) (`*.pdb`) created by SDK-style projects. + +An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you're building your NuGet package using an SDK-style project then you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: ```xml From a895a136e4171a6fe8c4e6b80d4497b8618c80c6 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 20 Nov 2018 12:37:36 +1300 Subject: [PATCH 4/6] PR feedback --- docs/standard/library-guidance/nuget.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index e52da855a1906..14edb64d0fd14 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -97,7 +97,7 @@ NuGet.org hosts its own [symbols server repository](/nuget/create-packages/symbo > [!IMPORTANT] > The NuGet.org symbol server only supports the new [portable symbol files](https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md) (`*.pdb`) created by SDK-style projects. -An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you're building your NuGet package using an SDK-style project then you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: +An alternative to creating a symbol package is embedding symbol files in the main NuGet package. The main NuGet package will be larger, but the embedded symbol files means developers don't need to configure the NuGet.org symbol server. If you're building your NuGet package using an SDK-style project, then you can embed symbol files by setting the `AllowedOutputExtensionsInPackageBuildOutputFolder` property: ```xml From 0b490fbf6315ad7907ffe2ba5708ec676503a35f Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 20 Nov 2018 12:41:58 +1300 Subject: [PATCH 5/6] Update guidance --- docs/standard/library-guidance/nuget.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index 14edb64d0fd14..90805841db9fb 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -110,7 +110,9 @@ An alternative to creating a symbol package is embedding symbol files in the mai **✔️ CONSIDER** embedding symbol files in the main NuGet package. -**❌ AVOID** creating a symbols package containing symbol files. +> Embedding symbol files in the main NuGet package gives developers a better debugging experience by default. They don't need to find and configure the NuGet symbol server in their IDE to get symbol files. +> +> The downside to embedded symbol files is they increase the package size by about 30% for .NET libraries compiled using SDK-style projects. If package size is a concern then you should publish symbols in a symbol package instead. >[!div class="step-by-step"] [Previous](./strong-naming.md) From caafdee372c3dba6040ce470237179b0f90e6671 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 20 Nov 2018 12:55:07 +1300 Subject: [PATCH 6/6] PR feedback --- docs/standard/library-guidance/nuget.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index 90805841db9fb..208f987f0e962 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -112,7 +112,7 @@ An alternative to creating a symbol package is embedding symbol files in the mai > Embedding symbol files in the main NuGet package gives developers a better debugging experience by default. They don't need to find and configure the NuGet symbol server in their IDE to get symbol files. > -> The downside to embedded symbol files is they increase the package size by about 30% for .NET libraries compiled using SDK-style projects. If package size is a concern then you should publish symbols in a symbol package instead. +> The downside to embedded symbol files is they increase the package size by about 30% for .NET libraries compiled using SDK-style projects. If package size is a concern, you should publish symbols in a symbol package instead. >[!div class="step-by-step"] [Previous](./strong-naming.md)