将自定义文件添加到Nuget包中,以便它们出现在根目录中?

时间:2019-05-07 13:50:01

标签: xml nuget

我正在使用NuGet版本:4.9.4.5839。

我已经创建了一个nuget包,我可以通过以下命令将其打包并推送:

  • dotnet pack myproj.csproj -c Release -o .
  • nuget push myproj.1.0.0.nupkg <key> ....

好的。

我可以在其他项目中使用该nuget包。

但是现在我想添加要包含的自定义文件。

因此,如果有人获取nuget,我希望在用户的解决方案中包含以下目录和文件:

这是我尝试过的:

我已经创建了一个文件夹和一个文件:

enter image description here

我还创建了aaa-health-check-net-core.nuspec文件:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2019</copyright>
    <tags>Tag1 Tag2</tags>
    <contentFiles>
      <files include="any/any/*.txt" buildAction="none" copyToOutput="true"/>
    </contentFiles>
  </metadata>

  <files>
    <file src="aaa\*.txt" target="contentFiles\any\any" />
  </files>
</package>

好吧,我们packpush

如您所见,我确实看到了一个更新。然后单击它。

enter image description here

结果是:

enter image description here

问题:

我不希望自定义文件出现在当前显示的位置。
我希望它出现在项目的

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你不能*。

您的项目使用新的SDK样式项目,该项目仅通过PackageReference支持NuGet,而PackageReference软件包仅影响构建输出,而不会影响项目文件。

使用传统项目文件并使用packages.config引用NuGet软件包的项目,将在软件包安装时将软件包content目录中的文件复制到项目中(但不进行还原,因此,文件需要检查到源代码管理中)。但是SDK样式的项目不支持packages.config

*如果您感到有些不舒服,则可以包括MSBuild目标,当目标运行时,该目标可以在项目中创建/复制/修改文件。但是没有安装时可以运行的目标(即使存在,即使不使用Visual Studio并使用文本编辑器编辑项目文件也不会触发目标),因此最有可能的目标是在构建中运行。假设使用您的软件包的人不希望您的文本文件出现在他们的项目中,因此他们将其删除,但是每次构建项目时,都会重新创建它。

仅供参考,dotnet cli支持使用dotnet nuget push进行推送,因此您可能无需仅下载nuget.exe就可以进行推送。