显示我的 nuget 的源代码

El *_*oZo 5 .net visual-studio nuget

我和我的团队构建了我们自己的框架,我们在许多项目中使用。我们曾经将框架的项目包含在所有其他项目中,但后来我们决定将框架放入 nuget 服务器上的 nuget 包主机中,以便我们可以在开发过程中更轻松地进行版本控制和传播框架。

一切都工作正常,除了但有一些明显的副作用。

Visual Studio 无法直接查看 nuget 的 dll 本身,因此 VS 搜索引擎无法查找我的 nuget 中存在的函数。出于同样的原因,我认为我无法再在项目中看到框架的源代码,只显示元数据。

我知道 nuget 包不显示其自己的源代码是正常行为,但我想知道是否可以将 nuget 包设置为“可信模式”,以便 Visual Studio 能够搜索其中的函数开发人员能够直接查看源代码(当然无法编辑它)。

多谢。

Leo*_*SFT 6

\n

这样 Visual Studio 将能够搜索其中的功能,并且开发人员能够直接查看源代码(当然无法编辑它)。

\n
\n\n

如果我知道你是正确的,你想访问 nuget 包中的代码但无法编辑?如果是,您可以尝试创建符号包,允许使用者在 Visual Studio 调试器中单步执行您的包代码。

\n\n

我们的做法(和工作方式):

\n\n
    \n
  1. 创建“*.symbols.nupkg”。

  2. \n
  3. 将符号包部署到SymbolSource服务器。

  4. \n
  5. 配置 IDE,包使用者可以将https://nuget.smbsrc.net/添加到 Visual Studio 中的符号源。

  6. \n
  7. 使用 NuGet(从我们的 SymbolSource 服务器)将所需的库添加到项目中。\n调试。

  8. \n
\n\n

详细信息可以参考创建符号包

\n\n

如果这些包不适合在 NuGet Gallery/SymbolSource 上发布,您可以将 *.nupkg 和 *.symbols.nupkg 文件放在网络共享上的 NuGet 本地源上。该方法的详细内容可以参考类似的问题:

\n\n

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

\n\n

此外,在这种情况下,您不必担心开发人员会编辑源代码,因为所有包都下载到本地包文件夹中,编辑不会影响网络共享上的源代码,直到您重新发布它。

\n\n

更新详情:

\n\n

您应该添加断点并按 F11 单步执行源代码:

\n\n

在此输入图像描述

\n\n

通过F12更新检查dll中的源代码:

\n\n

根据MSDN文档\xef\xbc\x9a

\n\n
\n

调试器在以下位置查找源文件:

\n\n
>1. Files that are open in the IDE of the Visual Studio instance that launched the debugger.\n\n>2. Files in the solution that is open in the VS instance.\n\n>3. Directories that are specified in the "Common Properties" / "Debug Source Files" page in the properties of the solution.\n\n>4. The source information of the .pdb of the module. This can be the location of the source file when the module was built, or it can be a command to a source server.\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

所以如果你想通过F12直接访问dll文件中的源代码,你应该在解决方案中添加源代码。您可以在解决方案中创建一个新项目来存放源文件,并将该项目添加为参考项目。这将使您的解决方案/项目变得混乱,但由于它将被签入源代码控制,所有团队成员将自动能够调试到源文件。

\n\n

此外,应该推荐ReSharper ,您可以通过转到ReSharper/选项/外部源来启用它,然后向上移动“来自符号文件的源”。然后在“来自符号文件的源”选项卡中,单击“高级”,您可以在其中映射源文件夹。

\n

  • 您提供的通过 F12 访问源代码的解决方案从技术上来说似乎是我们将框架放入 nuget 之前所做的事情...如果我们这样做,我们将必须引用,一个用于 nuget,一个用于侧面项目与来源? (2认同)