我在另一个解决方案中创建并安装了一个NuGet包,但现在我需要在从新的解决方案调用时调试该包的代码。我尝试引用包的解决方案,但不起作用。我使用的是Visual Studio 2013。
col17t5w1#
若要两柴任何dll,您需要它的符号档(.pdb)。如果您在debug组态中建置项目,您会看到这些档案已产生并放置在建置输出文件夹中。Visual studio从不同的位置加载这些符号文件,如here所述。调试nuget包最简单的方法是将包的.pdb文件放在要调试的项目的生成输出文件夹中。如果您尝试调试的代码被归类为非用户代码,则需要在调试选项中***取消选中***Just My Code。
debug
Just My Code
下面引用的Microsoft - Visual Studio Docs说明了什么是用户代码,什么是非用户代码。
用户和非用户代码
为了区分使用者程式码与非使用者程式码,Just My Code会查看符号(.pdb)档和程式最佳化。当二进制档已最佳化或.pdb档无法使用时,调试工具会将程式码视为非使用者程式码。三个属性也会影响调试工具视为My Code的项目:
所有其他代码都被视为用户代码。更详细的答案可以在on my blog中找到。
xzabzqsa2#
对于Visual Studio 2017和托管在GitHub或BitBucket上的nuget包源代码:1.启用 *.csproj文件中的完整调试信息:
<PropertyGroup Condition="'$(Configuration)'=='Debug'"> <DebugType>full</DebugType> <DebugSymbols>true</DebugSymbols> </PropertyGroup>
或右键单击“项目属性”>“生成”>“高级”>“输出调试信息”-设置为“完全”。1.要为nuget包dll启用自动源代码下载和单步执行,请将nuget包SourceLink.Create.CommandLine添加到项目中,或手动将其添加到 *.csproj文件中:
SourceLink.Create.CommandLine
<ItemGroup> <PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.2" PrivateAssets="All" /> </ItemGroup>
更多信息here。1.在“工具”-“选项”-“调试”中,禁用“仅启用我的代码”,并启用“在模块加载时禁止JIT优化(仅限托管)"。在此之后,您应该能够单步执行nuget包dll中的方法。
lx0bsm1f3#
我通过在调试模式下构建nuget包的来源项目,然后将pdb和dll从调试目录复制到我想在其中调试它的项目中的nuget dll的位置来实现这一点。例如,复制自外部核包\bin\调试 至项目目录\包\外部核包.1.0.0\lib\net4.5
dffbzjpn4#
如何调试我创建的nuget包中的代码正如NtFreX回答的那样:“* 要调试任何dll,您需要它的符号文件(.pdb)。“。因此,您可以创建符号包,使使用者能够在Visual Studio调试器中单步执行包代码。我们的工作方式:1.创建“.符号.nupkg”。1.将符号包部署到SymbolSource服务器。1.配置IDE,包使用者可以将https://nuget.smbsrc.net/添加到Visual Studio中符号源1.使用NuGet(从我们的SymbolSource服务器)将所需的库添加到项目。
0yg35tkg5#
有一个简单得多的解决方案:
只需在dll中嵌入调试符号。更新您的nupkg,瞧!
tpxzln5u6#
因为它可能会帮助其他人,这里是一个额外的解释问题在手。调试我创建的pkg需要什么?1.正如这里的其他人所说。.pdb 文件。1.同样,源代码如here所表示。那么,我如何包括我的nuget包的源代码呢?
ctehm74n7#
我在调试模式下打包了这个包,并从我的本地NuGet源代码安装了它。然后,当你调试的时候,你可以进入你的库。你可以添加你的NuGet本地源代码,它指向Tools -> Options -> Nuget Package Manager -> Package Sources中你的本地文件夹。
Tools -> Options -> Nuget Package Manager -> Package Sources
7条答案
按热度按时间col17t5w1#
若要两柴任何dll,您需要它的符号档(.pdb)。如果您在
debug
组态中建置项目,您会看到这些档案已产生并放置在建置输出文件夹中。Visual studio从不同的位置加载这些符号文件,如here所述。调试nuget包最简单的方法是将包的.pdb文件放在要调试的项目的生成输出文件夹中。
如果您尝试调试的代码被归类为非用户代码,则需要在调试选项中***取消选中***
Just My Code
。下面引用的Microsoft - Visual Studio Docs说明了什么是用户代码,什么是非用户代码。
用户和非用户代码
为了区分使用者程式码与非使用者程式码,Just My Code会查看符号(.pdb)档和程式最佳化。当二进制档已最佳化或.pdb档无法使用时,调试工具会将程式码视为非使用者程式码。
三个属性也会影响调试工具视为My Code的项目:
所有其他代码都被视为用户代码。
更详细的答案可以在on my blog中找到。
xzabzqsa2#
对于Visual Studio 2017和托管在GitHub或BitBucket上的nuget包源代码:
1.启用 *.csproj文件中的完整调试信息:
或右键单击“项目属性”>“生成”>“高级”>“输出调试信息”-设置为“完全”。
1.要为nuget包dll启用自动源代码下载和单步执行,请将nuget包
SourceLink.Create.CommandLine
添加到项目中,或手动将其添加到 *.csproj文件中:更多信息here。
1.在“工具”-“选项”-“调试”中,禁用“仅启用我的代码”,并启用“在模块加载时禁止JIT优化(仅限托管)"。
在此之后,您应该能够单步执行nuget包dll中的方法。
lx0bsm1f3#
我通过在调试模式下构建nuget包的来源项目,然后将pdb和dll从调试目录复制到我想在其中调试它的项目中的nuget dll的位置来实现这一点。
例如,复制自
外部核包\bin\调试
至
项目目录\包\外部核包.1.0.0\lib\net4.5
dffbzjpn4#
如何调试我创建的nuget包中的代码
正如NtFreX回答的那样:“* 要调试任何dll,您需要它的符号文件(.pdb)。“。因此,您可以创建符号包,使使用者能够在Visual Studio调试器中单步执行包代码。
我们的工作方式:
1.创建“.符号.nupkg”。
1.将符号包部署到SymbolSource服务器。
1.配置IDE,包使用者可以将https://nuget.smbsrc.net/添加到Visual Studio中符号源
1.使用NuGet(从我们的SymbolSource服务器)将所需的库添加到项目。
详细信息请参考Creating symbol packages。
如果这些软件包不适合在NuGet Gallery/SymbolSource上发布,您可以将 *.nupkg和 *.symbols.nupkg文件放在本地磁盘上。
注意:将源代码添加到引用该包的解决方案的调试源文件中(右键单击“解决方案”,选择“属性...公共属性...调试源文件”,然后添加相关二进制引用的根源目录)
0yg35tkg5#
有一个简单得多的解决方案:
只需在dll中嵌入调试符号。更新您的nupkg,瞧!
tpxzln5u6#
因为它可能会帮助其他人,这里是一个额外的解释问题在手。
调试我创建的pkg需要什么?
1.正如这里的其他人所说。.pdb 文件。
1.同样,源代码如here所表示。
那么,我如何包括我的nuget包的源代码呢?
ctehm74n7#
我在调试模式下打包了这个包,并从我的本地NuGet源代码安装了它。然后,当你调试的时候,你可以进入你的库。你可以添加你的NuGet本地源代码,它指向
Tools -> Options -> Nuget Package Manager -> Package Sources
中你的本地文件夹。