gpt4 book ai didi

.net - Nant fileset basedir 模式

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

我有一个 SVN externals 文件夹,其中包含许多名为 *Plugin 的文件夹,然后在每个文件夹中都有一个 modules 文件夹和一个 binaries 文件夹。

我的问题是,在我的构建任务中,我想将 **/* 从模块复制到我项目中的某个位置,以及任何 *.plugin.dll 从二进制文件位置到我项目中的其他地方。

所以这是一个虚拟的例子:

- DummyPlugin1
|- binaries
|- some.assembly.dll
|- some.plugin.dll
|- modules
|- some-named-folder
|- some-sub-folder
|- some.content.xml
|- some-other-sub-folder
|- yet-another-folder
|- some.more.content.jpg
- DummyPlugin2
|- binaries
|- some.other.plugin.dll
|- modules
|- another-named-folder
|- content.xml
|- image.jpg
|- yet-another-named-folder
|- some-web-page.html

所以在这个例子中我想基本上复制:

  • some.plugin.dll
  • some.other.plugin.dll

到给定的输出目录,然后从我想要的模块目录:

  • 一些命名文件夹(和所有内容)
  • 另一个命名文件夹(和所有内容)
  • yet-another-named-folder(和所有内容)

并将所有这些放在另一个给定的输出目录中。

我正在尝试这样做:

<copy todir="${dir.projects.dynamic.binaries}">
<fileset basedir="${dir.plugins}/**/binaries">
<include name="*.plugin.dll" />
</fileset>
</copy>
<copy todir="${dir.projects.dynamic.modules}">
<fileset basedir="${dir.plugins}/**/modules">
<include name="**/*" />
</fileset>
</copy>

但是,我不断收到错误消息,告诉我基于文件集的 basedir 不能包含 ** 或任何其他无效 符号。关于您是否可以或不能在您的文件集 basedir 中使用模式,文档似乎有点含糊,但是我假设在这个错误之后我不能。

问题是,如果我改为这样做:

<copy todir="${dir.projects.dynamic.binaries}">
<fileset basedir="${dir.plugins}">
<include name="**/binaries/*.plugin.dll" />
</fileset>
</copy>
<copy todir="${dir.projects.dynamic.modules}">
<fileset basedir="${dir.plugins}">
<include name="**/modules/**/*" />
</fileset>
</copy>

但是它会复制父文件夹,即 DummyPlugin1/binaries/some.assembly.dllDummyPlugin2/binaries/some.other.plugin.dll 而不仅仅是我想要的dll。与模块相同...

我知道我可以更改 basedir 以包含 DummyPlugin1/binaries、DummyPlugin2/binaries,但我不知道在不不断更改构建脚本的情况下会有多少文件夹或它们的名称,所以我宁愿保留它动态的,所以它只会为我提取其中的任何插件和模块,而不是我必须为每个可能存在或不存在的插件文件夹制作副本。

那有什么办法可以让我的蛋糕在这里吃吗?

最佳答案

basedir 必须是单个目录,但您应该能够使用 flatten 完成您想要的操作选项,它将所有输入文件放入一个输出目录(基本上忽略路径)。

再次阅读您的问题后:您可以试试这个吗?

<copy todir="${dir.projects.dynamic.binaries}" flatten="true">
<fileset>
<include name="${dir.plugins}/**/binaries/*.plugin.dll" />
</fileset>
</copy>
<copy todir="${dir.projects.dynamic.modules}">
<fileset basedir="${dir.plugins}">
<include name="/**/modules/**/*" />
</fileset>
</copy>

关于.net - Nant fileset basedir 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053214/

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