如何在Visual Studio IDE中查看github的源代码,但是使用Nuget的dll进行编译?

如今,有很多很棒的开源软件包和框架可供各种用途使用。 我们以ASP.NET Core MVC和Newtonsoft.Json为例。 这些是在Nuget包中提供的,它们被剥夺了源代码。 我想很多人都能记住很多情况,其中一个人希望在GitHub上免费获得源代码(以帮助调试某些问题),但是被迫做以下其中一种情况:

  1. 懒惰,只是忘了它,或继续调试你的问题与一个流行的图书馆,更像是一个“黑匣子”;
  2. 转到浏览器,输入github.com并搜索源代码,而不需要Visual Studio IDE的强大建议;
  3. 花5分钟,将存储库克隆到本地驱动器并使用IDE查看它;
  4. 在编译源代码时花费更多时间,从项目中卸载所有感兴趣的nuget包,而是直接连接到所有新编译的程序集(这些程序集并不总是与Nuget程序包一对一)。

最后一个选项是最可行的,但是您需要花费大量时间,而不能仅仅将其推送到存储库或再部署已编译的代码。 其他开发人员不会找到这些dll的相对路径,客户最终可能会在部署包中找到错误版本的nuget包。

是否有第五种选择,它具有第四种选择的所有优点,但没有任何缺点? 我想这是由一个独立的IDE中的IDE完成的,即没有修改我的.csproj和package.config文件,但是“转到定义”和“查找所有引用”function和调试应该像我迷上了一样真实的东西。

是的,我很懒。

正如其中一条评论所述,有一个VS扩展可以做到这一点: Nuget Reference Switcher (选择一个与你的VS版本相匹配的安装),有关更多信息,你可以在github上阅读它的wiki。

这是我通常做的事情:

  1. git clone源存储库
  2. 将开源的.sln/.csproj添加到您自己的解决方案中:

    在此处输入图像描述

  3. 运行nuget参考切换器扩展

这相当于你的第4步 ,但是由于扩展完成了繁重的工作,因此工作量减少了很多。

请将程序包打包为符号包,然后在下载程序包源代码后将PackageName.Symbols.nupkg文件与ProjectName.nupkg文件放在同一个程序包服务器上。 我正在使用以下步骤在Visual Studio IDE中调试我的NuGet包源代码。

  1. 创建我的NuGet包项目并实现我想要的function。 在您的情况下,您只需从Github.com下载软件包源代码即可。
  2. 在Visual Studio IDE中构建项目,它将在bin \ Debug文件夹中包含一个dll文件和一个pdb文件。
  3. 下载NuGet.exe并运行此命令将源代码项目打包到包:

NuGet Pack MyProject.csproj -Symbols

  1. 将生成两个文件,一个是ProjectName.symbols.nupkg,另一个是ProjectName.nupkg。 将这些文件上传到NuGet Server。 你也可以把它们放在你当地的司机身上。
  2. 通过工具 – >选项 – >包管理器控制台 – >包源将您的NuGet服务器添加到Visual Studio IDE中。
  3. 打开项目并从添加的包源安装包。
  4. 右键单击您的解决方案,选择“属性” – >“公共属性” – >“调试源文件”,添加包含存储在本地计算机上的ProjectName.nupkg文件的PackageName.Symbols.nupkg文件的路径。

现在,当您开始调试项目并按F11步骤进入已安装软件包中的一个函数时,它将进入包源代码。