我正在使用NuGet版本:4.9.4.5839。
我已经创建了一个nuget包,我可以通过以下命令将其打包并推送:
dotnet pack myproj.csproj -c Release -o .
nuget push myproj.1.0.0.nupkg <key> ....
好的。
我可以在其他项目中使用该nuget包。
但是现在我想添加要包含的自定义文件。
因此,如果有人获取nuget,我希望在用户的解决方案中包含以下目录和文件:
这是我尝试过的:
我已经创建了一个文件夹和一个文件:
我还创建了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>
好吧,我们pack
和push
。
如您所见,我确实看到了一个更新。然后单击它。
结果是:
问题:
我不希望自定义文件出现在当前显示的位置。
我希望它出现在项目的根中
我该怎么做?
答案 0 :(得分:1)
你不能*。
您的项目使用新的SDK样式项目,该项目仅通过PackageReference
支持NuGet,而PackageReference
软件包仅影响构建输出,而不会影响项目文件。
使用传统项目文件并使用packages.config
引用NuGet软件包的项目,将在软件包安装时将软件包content
目录中的文件复制到项目中(但不进行还原,因此,文件需要检查到源代码管理中)。但是SDK样式的项目不支持packages.config
。
*如果您感到有些不舒服,则可以包括MSBuild目标,当目标运行时,该目标可以在项目中创建/复制/修改文件。但是没有安装时可以运行的目标(即使存在,即使不使用Visual Studio并使用文本编辑器编辑项目文件也不会触发目标),因此最有可能的目标是在构建中运行。假设使用您的软件包的人不希望您的文本文件出现在他们的项目中,因此他们将其删除,但是每次构建项目时,都会重新创建它。
仅供参考,dotnet cli支持使用dotnet nuget push
进行推送,因此您可能无需仅下载nuget.exe就可以进行推送。