我正在运行.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>
它产生这个包:
如我们所见,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/