如何使用 msbuild 15 从生成的 nuget 包中的 nuspec 文件中删除依赖项部分

M.H*_*san 2 c# nuget nuspec visual-studio-2017 msbuild-15

我使用 msbuild v15.8.168.64424(vs 2017.8)命令行为控制台应用程序构建 nuget 包。我使用ILMerge合并所有依赖项,因此我只得到一个没有依赖项的exe文件。

运行命令时

        msbuild project1.csproj /t:build /p:configuration=release /p:IsTool=true
Run Code Online (Sandbox Code Playgroud)

我得到了 nuget 包,但是在检查它时,我发现了dependencies section.

     <dependencies>
           <group targetFramework=".NETFramework4.5">
            <dependency id="lib1" version="1.3.0" exclude="Build,Analyzers" />
            <dependency id="lib2" version="2.3.0" exclude="Build,Analyzers" />              
          </group>
        </dependencies>
Run Code Online (Sandbox Code Playgroud)

我希望“依赖项”部分为空(因为我合并了所有依赖项)。

我可以使用 nuspec 文件生成没有依赖项部分的包,但缺点是手动传递 csproj 中包含的所有元数据。我在包目标输入中没有找到依赖项的属性

问题:

如何从生成的 nuget 包中包含的 nuspec 文件中删除依赖项部分?

Mar*_*ich 5

您可以在 csproj 文件中设置PrivateAssets="All"包或项目引用 ( <PackageReference>/ )的元数据,以将它们排除为 NuGet 依赖项。<ProjectReference>

请注意,此更改需要还原,因此请在其间执行 NuGet 还原或添加-restore到 MSBuild 调用。