我的nuget包中的内容文件夹在安装包

时间:2017-06-22 20:53:40

标签: json asp.net-core nuget .net-core nuget-package

我正在运行.net核心1.1和nuget 3.5。

这是我的nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>ClassLibrary1</id>
    <version>1.0.0.4</version>
    <title>Class Library Test Content</title>
    <authors>name</authors>
    <owners>name</owners>        
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>package to test config file transfer</description>
    <copyright>Copyright 2017</copyright>
    <tags>TagUno TagDos</tags>
    <contentFiles>
      <files include="appsettings.json" buildAction="Content" copyToOutput="true" />
    </contentFiles>
  </metadata>

  <files>
    <file src="bin\Debug\net462\classlibrary1.dll" target="lib\net462\classlibrary1.dll" />
    <file src="appsettings.json" target="content\net462\appsettings.json" />
  </files>

</package>

它产生这个包: enter image description here

正如我们所看到的,appsettings.json文件位于nuget包中的content文件夹中。

但是,当我将软件包安装到我的项目时,appsettings.json文件不会复制到项目根目录。

我错过了什么?或者在.net核心中做的不同?

1 个答案:

答案 0 :(得分:8)

content子目录仅用于packages.config个项目。

使用PackageReference样式的NuGet引用的项目使用contentFiles部分,而不是允许指定要使用的构建操作。这些文件不会复制到项目中,而是作为项目包含在项目中,并可选择设置为复制到使用项目的构建输出:

<package>
  <metadata>
    ...
    <contentFiles>
        <files include="appsettings.json" buildAction="Content" copyToOutput="true" />
    </contentFiles>
  </metadata>
  <files>...</files>
</package>

请参阅contentFiles documentation for more detail

请注意,这些文件不会复制到项目中,而是以逻辑方式包含在内。只有packages.config个项目支持这个,因为没有其他方式可以提供文件 - 文档还说明这些文件应该被认为是不可变的。