NuGet在从csproj打包时包含tools文件夹

4
我正在尝试从一个csproj文件创建nuget包。这个包将在tools文件夹中包含一个install.ps1脚本和一些文件在content文件夹中。
然而,当从csproj文件打包时,似乎nuget将从相应的nuspec文件中提取包信息(描述、标签等),但不包括其他任何内容。它忽略了与nuspec文件在同一目录下的tools文件夹以及content文件夹。
通过这种方式打包时,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>

请问您能否发布您的nuspec文件? - Andy Lamb
2个回答

1
原来这个文档有点让我困惑。内容文件并不是文件的替代品。在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 问题中可以找到更多讨论。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接