有没有办法打包只有.SQL文件的文件夹,而不必使用Nuget.exe将它们添加到项目中?
我知道你可以在nuspec中指定文件夹,但这样做的过程是什么?我只能使用.net项目/应用程序制作软件包。
例如,如果我在名为Database.nuspec
的内部创建一个nuspecF:\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
答案 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