我的nuget包中的content文件夹在安装包时没有将文件添加到root

Cha*_*erB 4 json nuget nuget-package .net-core asp.net-core

我正在运行.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>
Run Code Online (Sandbox Code Playgroud)

它产生这个包: 在此输入图像描述

我们可以看到,appsettings.json文件位于nuget包中的content文件夹中.

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

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

Mar*_*ich 9

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

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

<package>
  <metadata>
    ...
    <contentFiles>
        <files include="appsettings.json" buildAction="Content" copyToOutput="true" />
    </contentFiles>
  </metadata>
  <files>...</files>
</package>
Run Code Online (Sandbox Code Playgroud)

有关contentFiles详细信息,请参阅文档.

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