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

时间:2017-08-10 18:11:30

标签: visual-studio-2015 nuget

首先,我对NuGet来说还是一个新手。我在工作中开发了许多内部C#桌面应用程序,它们之间共享一些公共代码。我一直在使用项目引用切换到创建私有NuGet包并将它们托管在位于共享网络文件夹中的本地源中。我现在只参与了几天,但我已经成功地将一些我的图书馆项目变成了包,并在目前为止在其他项目中使用它们。

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

当使用网络共享文件夹作为本地Feed时,如何使用常规包和符号包?在线建议使用单独的答案符号服务器。但是,我无法公开将此代码发布到symbolsource.org,而且我目前无法从我的雇主处获得托管服务器的服务器(这会消除诸如NuGet.Server,ProGet等解决方案)。我正在寻找甚至可能吗?

我已经查看了有关创建symbol packageslocal feeds以及此related question的官方文档。但是这些都没有我想要的信息。

编辑:我确实获得了对我的软件包的智能感知支持'通过记住在构建时使用this question中的信息打开XML文档生成的代码。但是仍然不确定调试支持。

1 个答案:

答案 0 :(得分:3)

  

如果只使用网络共享文件夹作为本地Feed,我该如何使用常规包和符号包?

我担心答案是否定的。当我在网络共享上的NuGet本地源中托管常规包和符号包时,我将该包安装到我的测试项目,转到调试,Visual Studio无法加载.pdb文件。由于.pdb文件包装在符号包中,因此Visual Studio无法直接访问它。所以建议是" 使用单独的符号服务器。"。

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

  1. Put the pdb and source code file in the NuGet package alongside the dll
  2. 将源代码添加到引用该程序包的解决方案的调试源文件中。
  3. 这意味着您可以单步执行代码并查看异常,但您可能必须在磁盘上找到一个文件并在设置断点之前将其打开。显然,您需要注意源是正确的修订版。

    有关第1步的详细信息:

    如果您目前没有使用Nuspec进行打包,则需要创建Nuspec,然后将pdb添加到lib文件夹中的文件列表和src文件夹中的源文件中。 " NuGet spec"可能是用于生成NuGet docs中定义的初始规范的有用命令。下面是我的.nuspec文件,您可以查看它:

    function containsObject(objStr, list) {
        var i;
        for (i = 0; i < list.length; i++) {
            if (JSON.stringify(list[i]) === objStr) {
                return true;
            }
        }
        return false;
    }
    
    var dtStr = JSON.stringify($scope.dt);
    containsObject(dtStr, $scope.payloaddata);
    

    有关第2步的详细信息:

    当您打开解决方案时,右键单击解决方案,选择属性...公共属性...调试源文件,然后添加相关二进制参考的根源目录

    enter image description here

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

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

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