39

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

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

4

3 回答 3

51

只需将您的 .cs 文件放在包根目录下名为“content”的文件夹中即可。

来自文档:

“您可以布局遵循 NuGet 约定的目录结构。

工具- 包的工具文件夹用于可从包管理器控制台访问的 PowerShell 脚本和程序。文件夹复制到目标项目后,添加到`$env:Path (PATH) 环境变量中。

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

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

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

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

于 2012-05-29T07:02:21.557 回答
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>
于 2012-10-24T15:27:40.730 回答
0

如果您正在创建PackageReference类似netstandard2.0库的项目,则以下内容应该有效:

.nu​​spec 文件:

<?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.

于 2018-09-25T17:12:53.790 回答