是否可以在网络共享的 NuGet 本地源中同时托管常规包和符号包?

Chr*_*ton 4 nuget visual-studio-2015

首先,我对 NuGet 还是很陌生。我在工作中开发了许多内部 C# 桌面应用程序,它们之间共享了一些通用代码。我一直在从使用项目引用切换到创建私有 NuGet 包并将它们托管在位于共享网络文件夹中的本地源中。我现在只研究了几天,但到目前为止我已经成功地将我的一些库项目转换成包并在其他项目中使用它们。

问题是,虽然我可以在依赖它们的其他解决方案中使用这些包提供的代码,但我没有获得 IntelliSense 支持或在包本身内进行调试的能力。事实证明,只有组装好的 DLL 分布在普通包中,根据我从网上搜索收集到的信息,我还需要创建包含 IntelliSense 和调试所需文件的符号包。

使用网络共享文件夹作为本地提要时,我该如何做到这一点 - 同时使用常规包和符号包?许多在线答案都建议使用单独的符号服务器。但是,我无法将此代码公开发布到 symbolsource.org,而且我目前无法从我的雇主那里获得一台服务器来托管(这消除了 NuGet.Server、ProGet 等解决方案)。我正在寻找的可能吗?

我已经看过关于创建符号包本地提要的官方文档,以及这个相关的问题。但这些都没有我正在寻找的信息。

编辑:通过记住在构建时打开 XML 文档生成,我确实获得了对我的包代码的 IntelliSense 支持,使用来自这个问题的信息。不过,仍然不确定调试支持。

Leo*_*SFT 6

当仅使用网络共享文件夹作为本地提要时,我该如何做到这一点 - 同时使用常规包和符号包?

恐怕答案是否定的。当我在网络共享的 NuGet 本地源中同时托管常规包和符号包时,我将该包安装到我的测试项目中,然后进行调试,Visual Studio 无法加载 .pdb 文件。由于 .pdb 文件包含在符号包中,Visual Studio 无法直接访问它。所以建议是“使用单独的符号服务器。 ”。

由于您无法将此代码公开发布到symbolsource.org,并且目前无法从您的雇主那里获得用于托管的服务器,因此我想在这里为您提供一个轻量级的解决方案

  1. 将 pdb 和源代码文件与 dll 一起放在 NuGet 包中
  2. 将源代码添加到引用包的解决方案的调试源文件中。

这意味着您将能够单步执行代码并查看异常,但您可能必须在磁盘上找到一个文件并打开它,然后才能设置断点。显然,您需要注意源代码的正确修订版。

有关第 1 步的更多详细信息:

如果您当前在没有 Nuspec 的情况下打包,则需要创建一个 Nuspec,然后将 pdb 添加到 lib 文件夹中的文件列表和 src 文件夹中的源文件列表中。“NuGet 规范”可能是生成NuGet 文档中定义的初始规范的有用命令。下面是我的 .nuspec 文件,您可以查看它:

<?xml version="1.0"?>
  <package >
    <metadata>
     <id>MyTestPackage</id>
     <version>1.0.3</version>
     <authors>Admin</authors>
     <owners>Admin</owners>
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <description>Package description</description>
     <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
     <copyright>Copyright 2017</copyright>
     <tags>Tag1 Tag2</tags>
   </metadata>

   <files>
     <file src="bin\Debug\MyTestPackage.dll" target="lib\Net46" />
     <file src="bin\Debug\MyTestPackage.pdb" target="lib\Net46" />
     <file src="Class1.cs" target="src" />
   </files>
</package>
Run Code Online (Sandbox Code Playgroud)

有关第 2 步的更多详细信息:

打开解决方案后,右键单击解决方案,选择 Properties...Common Properties...Debug Source Files,并添加相关二进制引用的根源目录

在此处输入图片说明

或查看MSDN。请注意,调试时无法打开解决方案属性。

使用 .nuspec 中的此设置,您只需在网络共享上的 NuGet 本地源中设置此常规包。安装此包,然后您可以在包本身内进行调试。

此外,SymbolSource 现在发布了一个名为SymbolSource Server Basic的社区版。