我正在使用nuget pack myproject.csproj
来打包DLL,但我也希望包含一个配置模板。这是相关的nuspec文件:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>Chris Vann</authors>
<owners>MyCompany</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Log4net appenders for targeting MS Azure</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2014</copyright>
<tags>log4net logging azure</tags>
</metadata>
<files>
<file src="log4net.config" target="."/>
</files>
</package>
Nuget正确导入元数据,但在打包csproj文件时似乎完全忽略了files元素。有解决方法吗?
答案 0 :(得分:3)
在对NuGet.exe命令行工具进行一些精细调试之后,我的回答是:
NuGet.exe使用默认排除列表从您的包中排除一些通常不需要的文件。 此列表还包含以点开头的任何文件/文件夹。
将nuspec中文件的目标设置为&#34;。&#34;使用pack命令时将其从包中排除。
解决方案是以下之一: (a)省略目标属性(相当于将目标设置为&#34;&#34;) (b)使用-NoDefaultExcludes选项,例如:pack myproj.csproj -NoDefaultExcludes
两个解决方案的结果与您的预期相同 - 名为log4net.config的文件将放在包的顶级文件夹中,紧邻.nuspec文件和lib文件夹。 我个人建议你使用选项(a),因为&#34;。&#34;文件夹没有根文件夹以外的含义。
一点注意:在我看来,您需要将log4net.config添加到DLL旁边的lib文件夹中,而不是添加到软件包的根文件夹中。
答案 1 :(得分:-2)
当 nuget pack 项目文件时,它不会查看 nuspec 文件。这是非常基本的。如果你想要更多的控制,比如指定文件,你需要使用 nuget pack mypackage.nuspec
注意:一旦包含文件部分,您必须列出所有文件。