nuget包将文件夹添加到解决方案
nuget package add folder to solution
我必须创建一个 nuget 包,但我遇到了一个问题:我想添加一个名为 "Config" 的文件夹,该文件夹包含三个 XML 个文件。
在网上搜索后,我尝试了两种方法(编辑我的 nuspec 文件)将这个自定义文件夹添加到我的 nuget 包中:
1)
<file src="Config\*.*" target="content\Config" />
2)
<file src="Config\*.*" target="Config" />
...但这些似乎都不起作用!
我已尝试将此包添加到测试解决方案(控制台应用程序)中,dll 已附加到解决方案,但 "Config" 文件夹未出现在解决方案的根目录中。
有什么问题?提前致谢!
洛洛
编辑
nuget spec and project directory
nuget spec opened into nuget package explorer
我的 Nuget 规范文件:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>Onions.Framework.Core</id>
<version>1.0.0</version>
<title>Onions Framework Core</title>
<authors>Onions Corporate</authors>
<owners>Onions Corporate</owners>
<licenseUrl>http://url/framework/core/license.txt</licenseUrl>
<projectUrl>http://url/framework/core/</projectUrl>
<iconUrl>http://url/framework/icon.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>no description</description>
<releaseNotes></releaseNotes>
<copyright>Onions Corporate</copyright>
<tags></tags>
<dependencies>
<dependency id="Castle.Core" version="4.2.1" />
<dependency id="Castle.Windsor" version="4.1.0" />
<dependency id="CommonServiceLocator" version="2.0.1" />
<dependency id="FluentNHibernate" version="2.0.3" />
<dependency id="Iesi.Collections" version="4.0.3" />
<dependency id="log4net" version="2.0.8" />
<dependency id="Newtonsoft.Json" version="10.0.3" />
<dependency id="NHibernate" version="4.1.1.4000" />
</dependencies>
<summary></summary>
</metadata>
<files>
<file src="bin\Release\netcoreapp2.0\*.dll" target="lib\netcoreapp2.0" />
<file src="bin\Release\netcoreapp2.0\*.pdb" target="lib\netcoreapp2.0" />
<file src="Config\*.*" target="content\Config" />
</files>
</package>
What is the problem? Thanks in advance!
"Config" 文件夹应该出现在 项目 的根目录而不是解决方案。
那是因为 NuGet 团队 deprecated solution level packages 在 NuGet 3.0 中。
所以来自nuget包的内容文件应该添加到项目中,而不是解决方案中。
此外,根据 From a convention-based working directory:
基于约定的工作目录content
,内容被复制到项目根目录。
"Config" 文件夹应该出现在项目的根目录中。
更新:
i have edited my question with your requests :) i'm using .NET core 2.0
因为你测试的项目类型是.net core。您应该使用 contentFiles
而不是 content
。 content
用于 packages.config。查看 Using the contentFiles element for content files and blog NuGet ContentFiles Demystified 了解更多详情。
所以你的 .nuspec
文件应该是:
<?xml version="1.0"?>
<package >
<metadata>
<id>Onions.Framework.Core</id>
...
<contentFiles>
<files include="any/any/Config/*.*" buildAction="Content" copyToOutput="false" flatten="true" />
</contentFiles>
</metadata>
<files>
<file src="bin\Release\netcoreapp2.0\*.dll" target="lib\netcoreapp2.0" />
<file src="bin\Release\netcoreapp2.0\*.pdb" target="lib\netcoreapp2.0" />
<file src="contentFiles\any\any\Config\*.*" target="contentFiles\any\any\Config" />
</files>
</package>
nuget 包应该是这样的:
注意:当你创建一个新的包时,不要忘记删除C:\Users\<UserName>\.nuget\packages
文件夹中这个包的nuget缓存,否则,它总是安装旧包。
希望对您有所帮助。
我必须创建一个 nuget 包,但我遇到了一个问题:我想添加一个名为 "Config" 的文件夹,该文件夹包含三个 XML 个文件。
在网上搜索后,我尝试了两种方法(编辑我的 nuspec 文件)将这个自定义文件夹添加到我的 nuget 包中:
1)
<file src="Config\*.*" target="content\Config" />
2)
<file src="Config\*.*" target="Config" />
...但这些似乎都不起作用!
我已尝试将此包添加到测试解决方案(控制台应用程序)中,dll 已附加到解决方案,但 "Config" 文件夹未出现在解决方案的根目录中。
有什么问题?提前致谢!
洛洛
编辑
nuget spec and project directory
nuget spec opened into nuget package explorer
我的 Nuget 规范文件:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>Onions.Framework.Core</id>
<version>1.0.0</version>
<title>Onions Framework Core</title>
<authors>Onions Corporate</authors>
<owners>Onions Corporate</owners>
<licenseUrl>http://url/framework/core/license.txt</licenseUrl>
<projectUrl>http://url/framework/core/</projectUrl>
<iconUrl>http://url/framework/icon.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>no description</description>
<releaseNotes></releaseNotes>
<copyright>Onions Corporate</copyright>
<tags></tags>
<dependencies>
<dependency id="Castle.Core" version="4.2.1" />
<dependency id="Castle.Windsor" version="4.1.0" />
<dependency id="CommonServiceLocator" version="2.0.1" />
<dependency id="FluentNHibernate" version="2.0.3" />
<dependency id="Iesi.Collections" version="4.0.3" />
<dependency id="log4net" version="2.0.8" />
<dependency id="Newtonsoft.Json" version="10.0.3" />
<dependency id="NHibernate" version="4.1.1.4000" />
</dependencies>
<summary></summary>
</metadata>
<files>
<file src="bin\Release\netcoreapp2.0\*.dll" target="lib\netcoreapp2.0" />
<file src="bin\Release\netcoreapp2.0\*.pdb" target="lib\netcoreapp2.0" />
<file src="Config\*.*" target="content\Config" />
</files>
</package>
What is the problem? Thanks in advance!
"Config" 文件夹应该出现在 项目 的根目录而不是解决方案。
那是因为 NuGet 团队 deprecated solution level packages 在 NuGet 3.0 中。
所以来自nuget包的内容文件应该添加到项目中,而不是解决方案中。
此外,根据 From a convention-based working directory:
基于约定的工作目录content
,内容被复制到项目根目录。
"Config" 文件夹应该出现在项目的根目录中。
更新:
i have edited my question with your requests :) i'm using .NET core 2.0
因为你测试的项目类型是.net core。您应该使用 contentFiles
而不是 content
。 content
用于 packages.config。查看 Using the contentFiles element for content files and blog NuGet ContentFiles Demystified 了解更多详情。
所以你的 .nuspec
文件应该是:
<?xml version="1.0"?>
<package >
<metadata>
<id>Onions.Framework.Core</id>
...
<contentFiles>
<files include="any/any/Config/*.*" buildAction="Content" copyToOutput="false" flatten="true" />
</contentFiles>
</metadata>
<files>
<file src="bin\Release\netcoreapp2.0\*.dll" target="lib\netcoreapp2.0" />
<file src="bin\Release\netcoreapp2.0\*.pdb" target="lib\netcoreapp2.0" />
<file src="contentFiles\any\any\Config\*.*" target="contentFiles\any\any\Config" />
</files>
</package>
nuget 包应该是这样的:
注意:当你创建一个新的包时,不要忘记删除C:\Users\<UserName>\.nuget\packages
文件夹中这个包的nuget缓存,否则,它总是安装旧包。
希望对您有所帮助。