相关疑难解决方法(0)

Nuget的最佳实践:调试还是发布?

目前,我将发布版本与Nuget一起打包到nuget.org的官方版本,但是我使用Nuget将调试版本打包为符号源推送到symbolsource.org.

编辑:( Jon Skeet,与Noda Time开发有一些偏见)

NuGet现在支持推送到NuGet gallery symbolsource.org(或类似的服务器),如文档所述.不幸的是,这里有两个相互矛盾的要求:

  • 当只使用库而不需要调试时,你真的想要一个发布版本.毕竟,这就是发布版本的用途.
  • 在调试库以进行诊断时,您确实需要一个禁用所有适当优化的调试版本.毕竟,那就是调试构建的目的.

这没关系,但是NuGet没有(据我所知)允许在同一个包中以有用的方式发布发布和调试版本.

所以,选择是:

  • 将调试版本分发给每个人(如文档中的示例所示),并使用任何大小和性能命中.
  • 将发布版本分发给每个人,并且稍微有点受损的调试体验.
  • 寻找一个非常复杂的分发策略,可能提供单独的发布和调试包.

前两个真正归结为调试和发布版本之间差异的影响......虽然值得注意的是,想要进入库代码之间也存在很大差异,因为你想要检查一些行为,并且想要调试库的代码,因为你相信你发现了一个bug.在第二种情况下,最好将库的代码作为Visual Studio解决方案并以这种方式进行调试,因此我不会过多关注这种情况.

我的诱惑是继续发布版本,期望相对较少的人需要调试,并且那些不会受发布版本中的优化影响很大的人.(无论如何,JIT编译器完成了大部分优化.)

那么,我们还没有考虑过其他选择吗?是否有其他考虑因素可以达到平衡?将NuGet软件包推向SymbolSource是否足够新,"最佳实践"真的还没有建立?

debugging release visual-studio nuget

84
推荐指数
2
解决办法
2万
查看次数

如何在我创建的nuget包中调试代码

我有一个我创建并在另一个解决方案中安装的nuget包但现在我需要在从我的新解决方案调用时调试包的代码.

我尝试引用包的解决方案,但无法正常工作.

我正在使用Visual Studio 2013.

c# visual-studio nuget nuget-package

28
推荐指数
5
解决办法
2万
查看次数

Azure DevOps SourceLink 和 Symbol Server 以及 Nuget 包中的 Release DLL

我有一个 .NET Standard 2.0TestSouceLink项目,其配置如下.csproj

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <Authors>Jérôme MEVEL</Authors>
    <Description>Just a test package for SourceLink</Description>
    <Version>1.1.1</Version>

    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DebugType>full</DebugType>
    <DebugSymbols>true</DebugSymbols>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.SourceLink.Vsts.Git" Version="1.0.0-beta2-18618-05">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我们有一个 Azure DevOps 服务器,它在构建管道中生成我们的 Nuget 包。

Publish symbols path在最后添加了一个任务来将.pdb文件推送到 Symbol Server,并且我设法让 Source Link 与 Azure DevOps Symbol Server 一起工作,仅使用Debug构建配置。

问题是我不希望在调试模式下生成 Nuget 包中的 DLL。我希望它们是Release。但是当我将dotnet pack任务更改为ReleaseConfiguration to package文本框中使用时,源链接不再起作用。 …

symbol-server nuget nuget-package sourcelink azure-devops

11
推荐指数
0
解决办法
674
查看次数

使用Azure Devops和Source Link调试NuGet程序包

我正在尝试让SourceLink与私有的NuGet包一起使用。我正在运行一个netcore2.1 Web应用程序,该应用程序引用了托管在我们的Azure Devops NuGet feed上的netstandard2.0 NuGet程序包。

问题1: Source Link是否支持.NET Standard程序包?

我已按照此处https://docs.microsoft.com/zh-CN/azure/devops/artifacts/symbols/setting-up-github-sourcelinking?view=vsts的指南中的说明进行操作,该操作基本上是:

  1. 将索引源和发布符号包添加到我的Azure Devops版本中。

  2. 在Visual Studio中,将我们的VSTS服务器添加为符号服务器

  3. 在Visual Studio中,启用“源链接”支持。我还尝试了启用源服务器支持。

构建管道的发布符号路径似乎正在运行-在我看到的日志中: Succeeded processing D:\a\1\s\src\MyCompany.Core.Services.SnapshotClient\bin\release\netstandard2.0\MyCompany.Core.Services.SnapshotClient.pdb:

当我开始调试应用程序时,在VS Output窗口中看到一堆输出: 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\2.1.4\Microsoft.AspNetCore.Hosting.dll'. Cannot find or open the PDB file.

对于我的NuGet软件包,我看到“符号已加载”,这似乎很有希望。

FWIW我没有从Visual Studio中看到“源链接将从互联网下载”的提示。

当我调试并尝试单步进入我的NuGet程序包时,它会逐步执行。

然后,我尝试:

  1. 前往https://github.com/dotnet/sourcelink并按照他们的说明安装Microsoft.SourceLink.Vsts.Git软件包(问题2是否必要?)

  2. 如果不起作用,我升级了应用程序中的每个darn包,这迫使我安装.NET Core SDK 2.1.403

  3. 尝试添加一些东西到我的NuGet包的.csproj的,拖网GitHub的问题后, <PublishRepositoryUrl>true</PublishRepositoryUrl> <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder> <DebugType>portable</DebugType> <ci>true</ci> 现在我.nu​​pkg包括.pdb文件太多,这是以前没有的。仍然不能帮助我进行调试。

  4. https://www.nuget.org/packages/sourcelink/安装了sourcelink cli工具,并sourcelink print-urls从我的.nupkg在.pdb上运行。看起来正确,我认为吗?网址存在。

  5. 看到来自@mitchdenny 的评论后,禁用索引编制功能https://github.com/MicrosoftDocs/vsts-docs/issues/1336#issuecomment-414415049。仍然不起作用。

现在我很困惑为什么它不起作用。

sourcelink azure-devops

5
推荐指数
1
解决办法
1470
查看次数