NuGet可以将.cs文件添加到目标项目吗?

lan*_*nce 34 nuget-package

我想创建一个NuGet包,在安装过程中将.cs文件(鼓励包消费者以后修改的基类)添加到目标项目的根目录.

那可能吗?到目前为止我发现的所有内容都说"不,你只能在软件包目录下面安装文件".

Ale*_*ion 44

只需将.cs文件放在名为"content"的文件夹中,即文件包的根目录.

来自文档:

"您可以布局遵循NuGet约定的目录结构.

tools - 包的tools文件夹用于可从Package Manager控制台访问的powershell脚本和程序.将文件夹复制到目标项目后,它将添加到`$ env:Path(PATH)环境变量中.

lib - 安装包时,lib文件夹中的程序集(.dll文件)将作为程序集引用添加.

content - 安装软件包时,内容文件夹中的文件将复制到应用程序的根目录.

将Content文件夹视为目标应用程序的根目录.例如,如果我想要一个包在目标应用程序的/ images目录中添加图像,请确保将图像放在包的Content/images文件夹中.

请参阅:http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory

  • 请注意,只有在安装软件包时才会复制内容,升级/恢复软件包不会更改内容,因此无法使用nuget升级内容.Nuget实际上只对.net程序集依赖项有用. (6认同)

Luk*_*Luk 9

您还可以使用<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>
Run Code Online (Sandbox Code Playgroud)

  • 目录通配符\*\*可能很有用.以下内容将./Assets目录的所有子目录复制到程序包中的./content/Assets(并排除名为readme.txt的任何文件).<file src ="Assets/**"target ="content"exclude ="**/readme.txt"/> (2认同)
  • 有没有办法在新的 dotnet SDK 中实现这一点,而不使用 nuspec 文件? (2认同)