如何包含带有NuGet包的文件,然后在安装NuGet包时将该文件添加到项目中?

时间:2018-04-20 15:27:01

标签: nuget

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

  1. ThisProject.config.example
  2. ThisProject.xsd
  3. 此项目打包为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. Init.ps1
    2. Install.ps1
    3. Uninstall.ps1
    4. 但是从VS 2017开始,第2和第3名已经过时了?为解释提供的链接指向有关MSBuild的信息。但据我所知,目前还没有关于flatfile类型的明确信息。

      然后。据说有一个<contentFiles>标签。但根据THIS帖子(NuGet博客),只有在将包添加到某些项目类型时才有效。并且不适用于package.config个文件......

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

1 个答案:

答案 0 :(得分:0)

我发现如果您将文件放在某些文件夹结构中,它们会隐式添加到包中,并且还会添加到项目根目录中。但是我还没有找到一种方法将文件添加为项目本身的项目。这是.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文档提到定义文件和contentFiles很有用。我认为要求是nuget包有一个文件夹content,其中文件被传输到项目目录