我正在运行.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>
正如我们所看到的,appsettings.json文件位于nuget包中的content文件夹中。
但是,当我将软件包安装到我的项目时,appsettings.json文件不会复制到项目根目录。
我错过了什么?或者在.net核心中做的不同?
答案 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
个项目支持这个,因为没有其他方式可以提供文件 - 文档还说明这些文件应该被认为是不可变的。