3

有没有办法打包一个仅包含 .SQL 文件的文件夹,而不必使用 Nuget.exe 将它们添加到项目中?

我知道您可以在 nuspec 中指定文件夹,但是这样做的过程是什么?我只能使用 .net 项目/应用程序制作包。

例如,如果我在内部创建一个名为 Database.nuspec 的 nuspec

F:\folder\trunk\Source\Database.nuspec

文件夹内

F:\folder\trunk\Source\Database

我想打包我的补丁脚本文件夹

F:\folder\trunk\Source\Database\Patch Scripts

在那个文件夹里我有

F:\folder\trunk\Source\Database\Patch Scripts\2.0
F:\folder\trunk\Source\Database\Patch Scripts\2.1
F:\folder\trunk\Source\Database\Patch Scripts\2.2

我是否需要将这些文件夹包含在我的 nuspec 中,或者 nuget.exe 是否足够聪明,可以为我打包它们?例如

更新:

解决方案 1:将每个文件夹包含到 nuspec

<files>
<file src="F:\folder\trunk\Source\Database\*.sql" target="Database" /> 
<file src="F:\folder\trunk\Source\Database\Patch Scripts\*.sql" target="Database\Patch Scripts\" /> 
<file src="F:\folder\trunk\Source\Database\Patch Scripts\2.0\*.sql" target="Database\Patch Scripts\2.0" />  
</files>

但是我有很多补丁文件,将大约 40 个补丁文件写入 nuspec 会非常乏味,如果我找到解决方法,我会更新。

解决方案 2:ufuk-haciogullari 建议使用

 *\*.sql

作为源,因为它们低一级,这是我想要的,但我需要保持文件结构完整,如果我只是写

<files>
<file src="F:\folder\trunk\Source\Database\*.sql" target="Database" /> 
<file src="F:\folder\trunk\Source\Database\Patch Scripts\*\*.sql" target="Database\Patch Scripts" />    
</files>

它将所有返回存储到目标 Database\Patch Scripts\ 这不是我想要的结构。

更新:

<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>database</id>
    <version>1.0.6</version>
    <authors>me</authors>
    <description>Description</description>
  </metadata>
<files>
    <file src="F:\folder\trunk\Source\Database\*.sql" target="Database\" />     
    <file src="F:\folder\trunk\Source\Database\Patch Scripts\**\*.sql" target="Database\Patch Scripts" />       
</files>

这会打包我的解决方案并按照以前的格式存储文件。

nuget.exe pack "F:\folder\trunk\Source\Database\database.nuspec" -OutputDirectory F:\NuGetStore

更新:

回到这一点,如果您将目标留空,它将重新创建已经存在的相同文件夹结构,因此您不需要创建目录。

<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>database</id>
    <version>1.0.6</version>
    <authors>me</authors>
    <description>Description</description>
  </metadata>
<files>
    <file src="F:\folder\trunk\Source\Database\*.sql" target="" />     
    <file src="F:\folder\trunk\Source\Database\Patch Scripts\**\*.sql" target="" />       
</files>

这会打包我的解决方案并存储文件。

nuget.exe pack "F:\folder\trunk\Source\Database\database.nuspec" -OutputDirectory F:\NuGetStore
4

1 回答 1

2

您可以创建一个 nuspec 文件并明确声明这些文件。

<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>MyPackage</id>
    <version>1.0.0</version>
    <authors>me</authors>
    <description>Description</description>
  </metadata>
  <files>
    <file src="*.sql" target="Content\SqlFiles" />
  </files>
</package>

然后对 nuspec 文件运行 pack 命令。

NuGet.exe pack MyPackage.nuspec
于 2013-03-05T13:31:17.013 回答