仅使用Nuget.exe打包SQL文件

时间:2013-03-05 13:21:14

标签: nuget

有没有办法打包只有.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是否足够聪明以便为我打包? E.G

更新

解决方案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

1 个答案:

答案 0 :(得分: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