【问题标题】:Visual Studio SourceLink Nuget Integration with Separate Solution DebuggingVisual Studio SourceLink Nuget 集成与单独的解决方案调试
【发布时间】:2020-11-20 17:04:13
【问题描述】:

我有一个我们在整个解决方案中使用的 nuget 包库,托管在 Azure Artifacts 中。这些 nuget 包是在启用调试的情况下构建的,因此会创建符号并将其包含在 nuget 包中。

我们在 Visual Studio(主要是 Net Core 3.1)中的项目使用 Nuget 包管理器以正常方式引用这些 nuget 包。

每个解决方案都启用了 SourceLink,因此如果我有任何调试要求需要单步执行引用的 nuget 包中的代码,我可以设置一个断点,并且由于 Visual Studio 直接从 Azure Artifacts 下载源代码,所以我可以很好地执行此操作。

一切都很完美。

问题是生产力问题。如果需要更改 nuget 包中的代码,我必须打开 nuget 包的解决方案,对其进行更改、推送并等待 Azure 构建。构建后,我去 Nuget 包管理器,更新包,重新启动应用程序,“希望”解决了这个问题。对于一些棘手的事情,我可以循环这个过程几次,这是生产力的杀手。

有没有办法从引用它的解决方案中直接在解决方案中调试 nuget 包?或者有没有人有更好的流程,他们使用的效率更高?

【问题讨论】:

  • 假设您使用的是 PackageReference,而不是 packages.config,暂时将 PackageReference 更改为 ProjectReference。请注意不要意外签入项目更改,尽管这应该会使 CI 失败,因此希望您无论如何都无法合并执行此操作的 PR。如果你使用 packages.config,你可以尝试添加一个 ProjectReference,看看会发生什么。我不确定是否有必要删除包,但稍微手动编辑 csproj 是可行的。

标签: c# visual-studio nuget azure-artifacts sourcelink


【解决方案1】:

您可以尝试使用floating version 可以解析到nuget 中的最新版本。这样,当有更新的包时,您的解决方案将在构建期间加载最新版本的包。

<ItemGroup>
    <PackageReference Include="NuGet.Packaging" Version="*" />
</ItemGroup>

【讨论】:

    【解决方案2】:

    有没有办法直接在解决方案中从引用它的解决方案中调试 nuget 包?

    当您需要频繁修改和调试nuget包中的源代码时,使用项目引用而不是nuget包。

    考虑生产效率时请考虑使用项目参考,考虑可移植性时请尽量使用nuget。您可以查看my previous线程以获取详细说明。

    根据您的情况,您可以通过Existing project选项将nuget包的项目添加到您的引用解决方案中:

    然后为nuget包选择项目文件.csproj

    将该项目添加到您的解决方案后,您可以将该项目添加为您的引用项目的项目引用。现在,您可以直接修改和调试 nuget 包的项目。

    当你完成这个阶段的工作后,你可以回到nuget包所在的项目所在的解决方案,打包新版本的nuget包并发布。

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 2011-11-13
      • 2017-05-30
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多