标签: sourcelink

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包中进行调试的记录方法,但说实话,很难理解什么对我来说是好方法。

我们有一个Azure DevOps服务器,在其上生成Nuget程序包,同时.pdb使用Index Sources & Publish Symbols构建管道中的任务将文件发布到Azure DevOps Symbol Server ,如下所述

我的项目中也有Microsoft.SourceLink.Vsts.Git对此.csproj文件的引用和此代码

<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
Run Code Online (Sandbox Code Playgroud)

我看过几篇博客文章,但是我最信任的最新资源当然是官方的Source Link Git仓库

readme.md文件说

通常不建议在.nupkg中包含PDB,因为这会增加包的大小,从而为使用您的包的项目恢复时间,无论用户是否需要通过库的源代码进行调试

我同意这一点,这就是为什么我要使用Symbol Server而不.pdb在Nuget软件包中包含文件的原因。因此,请不要将我的问题标记为与问题重复,因为接受的答案正是我不想做的。

自述文件还指出:

.snupkg符号包有一些限制

  • 它们当前不支持Windows PDB(由VC ++生成,或者对于将构建属性DebugType设置为full的托管项目)
  • 他们要求该库由较新的C#/ VB编译器构建(Visual Studio 2017 Update 9)。
  • 程序包的使用者还需要Visual Studio 2017 Update 9调试器。
  • Azure DevOps Artifacts服务不支持

所以至少我知道我不能使用它。

但是,设置并运行Source Link的正确方法是什么?

当我调试测试控制台应用程序时,它成功将.pdb文件下载到我的Symbols缓存文件夹中,但是如果我尝试使用进入来自我的Nuget包的代码F11,那将是行不通的。(但是System.String.Concat由于我的简单测试Nuget Package实际上是连接一些字符串,所以它介入了)

我试着跑步sourcelink test TestSourceLink.pdb但得到了error: url …

debug-symbols visual-studio nuget-package sourcelink azure-devops

8
推荐指数
1
解决办法
1251
查看次数

转到使用sourcelink的实现

如何为VisualLink公开的库代码启用Visual Studio"Go to implementation"?

我们最近开始在我们的.NETcore库中使用SourceLink,试图在使用它时调试库.我们使用这个项目启用了SourceLink:ctaggart/SourceLink,通过在csproj中添加以下行:

<PackageReference Include="SourceLink.Embed.AllSourceFiles" Version="2.6.0" PrivateAssets="All" />
Run Code Online (Sandbox Code Playgroud)

这非常有效,因为我现在能够使用调试器进入库代码,但我无法跳转到任何此库代码的实现/定义.有没有办法让视觉工作室做到这一点?

c# visual-studio sourcelink

7
推荐指数
1
解决办法
487
查看次数

如何使用 Source Link 调试 asp.net core 异步方法?

我正在尝试调试 asp.net 核心内部结构以查看幕后发生了什么。

我根据这篇文章在VS Code中设置了.net核心调试:https : //github.com/OmniSharp/omnisharp-vscode/wiki/Debugging-into-the-.NET-Framework-itself

现在我在调试时自动获得 .net 核心源代码,并且可以进入方法,但不能进入异步方法。由于我手头没有源代码(它从某处动态加载),我无法在异步方法中设置断点以使调试器停止。

我有以下控制器方法。如何进入HttpContext.SignInAsync(...)VS Code 调试器中的方法?

public async Task<IActionResult> Login(LoginModel model)
{
    ...
    await HttpContext.SignInAsync(principal);
    ...
}
Run Code Online (Sandbox Code Playgroud)

更新 #1

Visual Studio 2019 也是一样。所以我使用 VS Code 还是 VS 2019 都没有关系。

c# debugging async-await sourcelink asp.net-core

6
推荐指数
0
解决办法
365
查看次数

无法进入私有存储库中托管的启用 SourceLink 的 NuGet

我正在使用 Visual Studio 15.8.4 从私有 MyGet 源引用 NuGet 包。源代码由 GitHub 上的私人存储库托管。

我可以成功打印文件中的映射文档:

sourcelink print-json C:\Users\Foo\.nuget\packages\My.Package\1.1.0-beta-0040\lib\netstandard2.0\My.Package.dll
{"documents":{"C:\\projects\\my-package\\*":"https://raw.githubusercontent.com/username/My.Package/aba3ab5d12f1271943b8db0d79e1ee25ad4735c2f/*"}}
Run Code Online (Sandbox Code Playgroud)

我在 Visual Studio 中取消选中Enable Just My Code,并且我已选中Enable Source Link supportFall back to Git Credential Manager authentication for all Source Link requests.

但是当我调试时,调试器不会进入包。我希望显示有关“源链接将从互联网下载”的对话框,但什么也没有发生。调试器只是单步执行代码行。

由于文档路径是正确的,除了tokenURI 中缺少的键之外,我得出的结论是 NuGet 包本身已正确打包,因此我没有提供有关该过程的任何详细信息。

这些文件不可下载,但这是由于未进行身份验证,不是吗?

sourcelink test C:\Users\Foo\.nuget\packages\My.Package\1.1.0-beta-0040\lib\netstandard2.0\My.Package.dll
{"documents":{"C:\\projects\\my-package\\*":"https://raw.githubusercontent.com/username/My.Package/aba3ab5d12f1271943b8db0d79e1ee25ad4735c2f/*"}}

2 Documents with errors:
111111111117629326ff4b1b85b15fad279137fe sha1 csharp C:\projects\my-package\src\My.Package\Extensions.cs
https://raw.githubusercontent.com/username/My.Package/11111111111095e33b8db0d79e1ee25ad4735c2f/src/My.Package/Extensions.cs
error: url failed NotFound: Not Found
1111111111184ac4af0122bdae9216bd24036e8f sha1 csharp C:\projects\my-package\src\My.Package\MyProgram.cs
https://raw.githubusercontent.com/username/My.Package/11111111111095e33b8db0d79e1ee25ad4735c2f/src/My.Package/MyProgram.cs
error: url failed NotFound: Not …
Run Code Online (Sandbox Code Playgroud)

.net nuget myget sourcelink

5
推荐指数
0
解决办法
1154
查看次数

使用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
查看次数

启用 SourceLink

在 VSTS (Azure DevOps) 上拥有私有存储库我尝试通过将以下内容添加到 .csproj 文件来启用 SourceLink:https : //github.com/dotnet/sourcelink#azure-devops-visual-studio-team-services

这在调试期间似乎没有任何影响。本地 NuGet 包中抛出了一个异常,我无法使用调用堆栈窗口导航到它,因为该项目甚至没有加载 pdb。

我在 Visual Studio 中禁用了“仅启用我的代码”并启用了 SourceLink。

我还需要做哪些更改才能启用 SourceLink?

c# visual-studio sourcelink

2
推荐指数
1
解决办法
1196
查看次数