我正在尝试打包我的项目文件并使用以下内容创建 nuget 包: NuGet pack file.csproj -p Configuration = $(ConfigurationName); -NoPackageAnalysis
但问题是它将文件/文件夹与“content”文件夹和程序集中的项目相关联在“lib”文件夹中,但我想要root文件/文件夹和 bin 文件夹中的库类似于此。
但是现在我的文件夹结构是这样的:
我的nuspec文件的结构是
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>abc</authors>
<owners>abc</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>abc</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 9999</copyright>
<tags></tags>
</metadata>
<files>
<file src="bin\**" target="bin" />
<file src="$target$\**\*.*" target=""/>
</files>
</package>
即使从我的nuspec文件中排除 ,也会产生第二张图片中显示的相同输出结构。我正在使用nuget版本 4.1.0 ,我也尝试使用早期版本的nuget,如 2.8.6 。
答案 0 :(得分:1)
我也在努力解决这个问题,但了解<files />
中的/package
集合与<contentFiles />
中的/package/metadata
集合之间的区别非常重要。
<files />
集合告诉打包程序要放入包中的文件,放在您的lib
,content
或tools
目录中封装
注意:您不需要使用此集合,也可以使用a convention-based working directory。
<contentFiles />
集合告诉包使用者如何使用包中包含的文件。
在你的情况下,.nuspec文件看起来应该是这样的(虽然不确定$target$
部分:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>abc</authors>
<owners>abc</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>abc</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 9999</copyright>
<tags></tags>
<contentFiles>
<files include="bin/**" buildAction="None" copyToOutput="true" />
</contentFiles>
</metadata>
<files>
<file src="bin\**" target="content\bin" />
<file src="$target$\**\*.*" target="content"/>
</files>
</package>
答案 1 :(得分:0)
我有类似的问题,我必须在包根目录中放置一个文件(因为安装的加载项应用程序总是在那里寻找文件)。
我希望在my.dll
文件夹中提供packages/My.App.101
。
所以我这样做了:
<?xml version="1.0"?>
<package >
<metadata>
<id>My.App</id>
<version>101</version>
<title>title</title>
<authors>abc</authors>
<owners>abc</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>abc</description>
<releaseNotes></releaseNotes>
<copyright></copyright>
<tags></tags>
</metadata>
<files>
<file src="My.App.dll" target="/" />
</files>
</package>
target="/"
所以这应该对你有用
<files>
<file src="YourFolder\yourfile.extension" target="bin/" />
<file src="YourFolder\yourfile.extension" target="bin/anotherfolder/" />
</files>
target="bin/"
快乐包装:)
答案 2 :(得分:-2)
您应该创建自定义.nuspec文件
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>title</id>
<version>1.0.0</version>
<authors>abc</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>desc</description>
</metadata>
<files>
<file src="bin\Debug\bin\*.*" target="bin" />
<file src="bin\Debug\fonts\*.*" target="fonts" />
............
</files>
</package>