我想创建一个 NuGet 包,在安装过程中将 .cs 文件(鼓励包使用者稍后修改的基类)添加到目标项目的根目录。
那可能吗?到目前为止我发现的所有内容都说“不,你只能在包目录下安装文件”。
我想创建一个 NuGet 包,在安装过程中将 .cs 文件(鼓励包使用者稍后修改的基类)添加到目标项目的根目录。
那可能吗?到目前为止我发现的所有内容都说“不,你只能在包目录下安装文件”。
只需将您的 .cs 文件放在包根目录下名为“content”的文件夹中即可。
来自文档:
“您可以布局遵循 NuGet 约定的目录结构。
工具- 包的工具文件夹用于可从包管理器控制台访问的 PowerShell 脚本和程序。文件夹复制到目标项目后,添加到`$env:Path (PATH) 环境变量中。
lib - 安装包时,将 lib 文件夹中的程序集(.dll 文件)添加为程序集引用。
内容- 安装包时,内容文件夹中的文件将复制到应用程序的根目录。
将 Content 文件夹视为目标应用程序的根目录。例如,如果我希望一个包在目标应用程序的 /images 目录中添加图像,请确保将图像放在包的 Content/images 文件夹中。”
您还可以<files>
在构建包时使用 nuspec 的部分将文件移动到内容文件夹中:
<?xml version="1.0"?>
<package>
<metadata>
...
</metadata>
<files>
<file src="App.Template.config" target="content" />
<file src="Program.template.cs" target="content" />
</files>
</package>
如果您正在创建PackageReference
类似netstandard2.0
库的项目,则以下内容应该有效:
.nuspec 文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata minClientVersion="3.3.0">
...
<contentFiles>
<files include="**/Pages/Shared/*.*" buildAction="Content" />
</contentFiles>
</metadata>
<files>
<file src="bin\Release\netstandard2.0\*.dll" target="lib\netstandard2.0" />
<file src="contentFiles\**\*" target="contentFiles" />
</files>
</package>
这会将contentFiles
文件夹复制到项目中。您可以通过编程语言和平台指定不同的文件。如果您想将所有文件都添加到contentFiles/any/any
.