是否可以恢复启用 EmbedAllSources 构建的 nuget 包的源代码?

Is it possible to recover the source code of a nuget package built with EmbedAllSources enabled?

我正在从我的 csproj 文件中的 new-format-csproj project. I included the EmbedAllSources 属性(见下文)构建一个 nuget 包:

...
<PropertyGroup>
  <!-- Omitted for brevity --> 
  <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  <IncludeSymbols>true</IncludeSymbols>
  <EmbedAllSources>true</EmbedAllSources>
  <!-- Omitted for brevity --> 
</PropertyGroup>
...

我的 nuget 的消费者,retrieve/reconstruct 是否可能因为那个 属性 而成为我的 nuget 的源代码?如果可以,怎么做?

是的。

运行 这与 dotnet 核心 3.1.201 和一个最小的测试项目,我最终在输出文件夹中得到一个 .nupkg 和一个 .symbols.nupkg。这些文件只是 zip,所以可以用任何你喜欢的方式解压它们。 .symbols.nupkg 文件包含 /libs/{framework}/ 下的 .pdb 文件。我什至没有尝试做任何聪明的事情……只是把它扔进了记事本++,你可以清楚地看到所有相关的源代码都在那里。将其提取到单独的 .cs 文件中会花费更多的精力,但不会太多。