【问题标题】:How can I include a file with a NuGet package, and then add that file to a project when the NuGet package is installed?如何在 NuGet 包中包含文件,然后在安装 NuGet 包时将该文件添加到项目中?
【发布时间】:2018-04-21 02:26:13
【问题描述】:

我有一个包含 2 个文件的项目:

  1. ThisProject.config.example
  2. ThisProject.xsd

这个项目被打包成一个 Nuget 包,然后被添加到其他项目中。发生这种情况时,我希望将这些文件复制到项目中。然后用户将ThisProject.config.example 复制到ThisProject.config 并编辑该文件。

我了解在.nuspec 文件中包含文件有两种方法。它们是:

<files>
  <file src="ThisProject.config.example" target="ThisProject.config.example" />
  <file src="ThisProject.xsd" target="ThisProject.xsd"/>
</files>

这样做,我看到当我将包安装到文件已复制的/packages 文件夹中时。哪个好。但是,那么似乎我需要使用.ps 脚本将它们添加到安装了nuget包的项目中?

我还没有尝试过,但是根据THIS链接,可以将三个脚本合并到NuGet包中:

  1. 初始化.ps1
  2. Install.ps1
  3. 卸载.ps1

但是从 VS 2017 开始,2 号和 3 号已经过时了?为解释提供的链接指向有关 MSBuild 的信息。但据我所知,没有关于平面文件类型的明确信息。

那么。据说有一个&lt;contentFiles&gt; 标签。但根据THIS 帖子(NuGet 博客)仅在将包添加到某些项目类型时才有效。并且不适用于package.config 文件...

将文件从 NuGet 包添加到项目的预期方式是什么?

【问题讨论】:

    标签: nuget


    【解决方案1】:

    我发现,如果您将文件放在某些文件夹结构中,它们会被隐式添加到包中并添加到项目根目录中。但是,我仍然没有找到将文件添加为项目本身的项目的方法。这是 .nuspec 文件的示例。

    <?xml version="1.0"?>
    <package >
      <metadata>
        ...
        <tags>some tags</tags>
        <contentFiles>
          <files include="**/*.*" buildAction="None" copyToOutput="true" flatten="true" />
        </contentFiles>
      </metadata>
      <files>
        <file src="contentFiles\any\any\config\name.example" target="content\name.example" />
        <file src="contentFiles\any\any\config\name.xsd" target="content\name.xsd"/>
      </files>
    </package>
    

    MS 文档提到定义文件和内容文件很有用。我觉得要求是nuget包有一个文件夹content,里面的文件转移到项目目录

    【讨论】:

    • 其实。有时文件引用会添加到 .sln 文件中,有时则不会。不知道为什么,或者我是否在做不同的事情会导致不同的结果。
    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2019-06-05
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多