我正在运行.net core 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>

它产生这个包:
json - 安装该软件包时,我的nuget软件包中的content文件夹未将文件添加到根目录中-LMLPHP

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

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

我想念什么?还是在.net核心中以不同的方式进行?

最佳答案

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

使用NuGet引用的PackageReference样式的项目使用contentFiles节代替,该节允许指定要使用的生成操作。这些文件不会复制到项目中,而是作为项目中的项目包括在内,并且可以选择设置为复制到使用项目的生成输出中:

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

参见 contentFiles documentation for more detail

请注意,这些文件不会复制到项目中,而是在逻辑上包含在内。因为没有其他方法可以贡献文件,所以只有packages.config项目支持此功能-文档还指出这些文件无论如何都应该被认为是不可变的。

关于json - 安装该软件包时,我的nuget软件包中的content文件夹未将文件添加到根目录中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44709212/

10-12 12:18
查看更多