2016-11-23 75 views
3

我试图从csproj文件创建nuget包。该软件包将在工具文件夹中包含一个install.ps1脚本,并在内容文件夹中包含一些文件。NuGet包含从csproj打包时的工具文件夹

但是,从csproj文件打包时,nuget将从相应的nuspec文件中提取包信息(描述,标签等),但不包括其他任何内容。它会忽略与nuspec文件以及内容文件夹位于同一目录中的工具文件夹。

当以这种方式打包时,nuget似乎也忽略nuspec文件的contentFiles部分中包含的文件。

这是预期的行为?如果是这样,我是否有办法从csproj打包并获取包含在内容中的内容和工具文件夹?

我意识到我可以只使用只有一个nuspec文件,这将工作,但我有多个包我试图建立这种方式和手动管理依赖关系成为一项不重要的任务。

运行的NuGet 3.4.4.1321

我nuspec文件:

<?xml version="1.0"?> 
<package> 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <title>$id$</title> 
    <authors>authors</authors> 
    <owners>$owners$</owners> 
    <projectUrl>http://dummy.url</projectUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>the description</description> 
    <copyright>$copyright$</copyright> 
    <releaseNotes>$releaseNotes$</releaseNotes> 
    <contentFiles> 
     <files include="content\App.config.install.xdt"/> 
     <files include="content\App.config.uninstall.xdt"/> 
     <files include="temp\App.config"/> 
    </contentFiles> 
    <tags>wpf testing</tags> 
    </metadata> 
</package> 
+0

您可以发布您nuspec文件好吗? –

回答

0

原来这个文件弄得我有点。内容文件不是文件的替代品。在NuGet 3中,两者都可以同时使用。

在我的nuspec文件中使用metadata标记之外的Files标记允许我指定进入工具和内容文件夹的项目。

更新nuspec:

<?xml version="1.0"?> 
<package> 
    <metadata> 
    <id>$id$</id> 
    <version>$version$</version> 
    <title>$id$</title> 
    <authors>authors</authors> 
    <owners>$owners$</owners> 
    <projectUrl>http://dummy.url</projectUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>the description</description> 
    <copyright>$copyright$</copyright> 
    <releaseNotes>$releaseNotes$</releaseNotes> 
    <tags>wpf testing</tags> 
    </metadata> 
<files> 
    <file src="App.config.install.xdt" target="content"/> 
    <file src="App.config.uninstall.xdt" target="content"/> 
    <file src="tools\install.ps1" target="tools"/> 
    </files> 
</package> 

希望这有助于万一别人得到由文档这里绊倒。

在这个NuGet Issue中可以找到更多的讨论。