排除NuGet中所有类型的文件

时间:2013-03-12 00:38:26

标签: visual-studio-2012 nuget nuget-package

问题:我的Visual Studio项目中有.sql文件,我想从我的NuGet包中排除。这些.sql文件嵌套到各种目录中,我无法从我的nuget包中成功排除所有.sql文件。


1:我在目标项目上运行以下命令创建了一个.nuspec文件:

nuget spec

2:我编辑了生成的nuspec文件,看起来像这样:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Security Core Impl</description>
    <releaseNotes>Security Core Impl</releaseNotes>
    <copyright>Copyright 2013</copyright>
    <tags>Security Core</tags>
  </metadata>
  <files>
    <file src="**\*.dll" target="lib\net40\" exclude="**\*.sql;" />
  </files>
</package>

3:我运行以下命令来构建我的.nupkg:

nuget pack -Prop Configuration=Release

但是,每当我将此软件包安装到另一个项目中时,都会包含.sql文件。我已经尝试了上面排除的几个不同变体,并尝试了-Exclude开关。似乎没什么用。

所有.sql文件都标记为:

  • 构建操作:无
  • 复制到输出目录:不要复制

我还尝试通过Visual Studio选项清除我的NuGet缓存。

注意: NuGet包托管在私人服务器上。

2 个答案:

答案 0 :(得分:12)

我刚刚遇到完全相同的问题,但是使用.txt文件。同事指出的解决方案是将构建操作从“内容”更改为“无”。

答案 1 :(得分:1)

我假设您的* .sql文件位于包的content文件夹下?

<file src="**\*.dll" target="lib\net40\" exclude="**\*.sql;" />告诉NuGet在lib \ net40下添加所有.DLL文件。 SQL文件被忽略,因为你的include还没有包含它们。

您可以尝试将<file target="content\" exclude="**\*.sql;" />添加到nuspec吗?