8

问题:我的 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 包托管在专用服务器上。

4

2 回答 2

14

我刚刚遇到了完全相同的问题,但使用的是 .txt 文件。一位同事指出的解决方案是将Build Action从“Content”更改为“None”。

于 2013-06-25T14:44:32.957 回答
1

我假设你的 *.sql 文件在content包的文件夹下?

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

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

于 2013-03-13T07:15:12.963 回答