gpt4 book ai didi

nuget - 仅使用 Nuget.exe 打包 SQL 文件

转载 作者:行者123 更新时间:2023-12-01 11:33:15 25 4
gpt4 key购买 nike

有没有办法打包一个仅包含 .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

最佳答案

您可以创建一个 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

关于nuget - 仅使用 Nuget.exe 打包 SQL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15224870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com