Yat*_*iac 28 c# visual-studio nuget nuget-package
我有一个我创建并在另一个解决方案中安装的nuget包但现在我需要在从我的新解决方案调用时调试包的代码.
我尝试引用包的解决方案,但无法正常工作.
我正在使用Visual Studio 2013.
NtF*_*reX 26
要调试任何DLL,您需要它的符号文件(.pdb).如果在debug配置中构建项目,您将看到生成这些文件并将其放入构建输出文件夹中.
Visual Studio从这里描述的不同位置加载那些符号文件.但调试nuget包的easyies方法是将包的.pdb文件放在要调试的项目的build output文件夹中.
如果您尝试调试的代码被归类为非用户代码,则需要在调试选项中取消选中 Just My Code.
用户和非用户代码
为了区分用户代码和非用户代码,Just My Code查看符号(.pdb)文件和程序优化.当优化二进制文件或.pdb文件不可用时,调试器将代码视为非用户代码.
三个属性也会影响调试器认为是我的代码:
所有其他代码都被视为用户代码.
xha*_*fan 20
对于 Visual Studio 2017 和托管在 GitHub 或 BitBucket 上的 nuget 包源代码:
在 *.csproj 文件中启用完整的调试信息:
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
或者右键项目属性,build,advanced,输出调试信息——设置为full。
要为您的 nuget 包 dll 启用自动源下载和步进,请将 nuget 包添加SourceLink.Create.CommandLine到您的项目,或手动将其添加到 *.csproj 文件中:
<ItemGroup>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.2" PrivateAssets="All" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
更多信息在这里。
在工具 - 选项 - 调试中,禁用“仅启用我的代码”,并启用“抑制模块加载时的 JIT 优化(仅限托管)”。
在此之后,您应该能够从您的 nuget 包 dll 中进入方法。
我通过在Debug模式下构建nuget包起源的项目来工作,然后将pdb和dll从debug目录复制到要在其中调试它的项目内nuget dll的位置。
例如从复制
ExternalNugetPackage \ bin \ Debug \
至
ProjectDirectory \ Packages \ ExternalNugetPackage.1.0.0 \ lib \ net4.5
如何在我创建的nuget包中调试代码
正如NtFreX回答的那样," 要调试任何DLL,你需要它的符号文件(.pdb). " 因此,您可以创建符号包,使消费者可以在Visual Studio调试器中单步执行包代码.
我们这样做(和工作)的方式:
有关详细信息,请参阅创建符号包.
如果这些包不适合在NuGet Gallery/SymbolSource上发布,则可以将*.nupkg和*.symbols.nupkg文件放在本地磁盘上.
注意:将源代码添加到调试源文件中以获取引用该包的解决方案(右键单击Solution,选择Properties ... Common Properties ... Debug Source Files,然后添加相关二进制引用的根源目录)
| 归档时间: |
|
| 查看次数: |
19463 次 |
| 最近记录: |