MSBUILD-在ftp服务器上存在文件之前阻止?

MSBUILD-在ftp服务器上存在文件之前阻止?,msbuild,ftp,Msbuild,Ftp,作为构建过程的一部分。。我想阻止构建,直到在ftp位置远程创建(存在)文件,然后继续构建。(最好有某种超时限制) 建议 仅使用标准的msbuild任务和/或extensionPack/communitytask是否可以实现这一点?最好的办法是生成一个小型自定义exe(甚至可以将其编译为生成步骤),以轮询您要查找的文件。然后在预构建步骤中使用预构建目标或自定义目标来验证文件是否存在 <Project xmlns="http://schemas.microsoft.com/developer/

作为构建过程的一部分。。我想阻止构建,直到在ftp位置远程创建(存在)文件,然后继续构建。(最好有某种超时限制)

建议


仅使用标准的msbuild任务和/或extensionPack/communitytask是否可以实现这一点?

最好的办法是生成一个小型自定义exe(甚至可以将其编译为生成步骤),以轮询您要查找的文件。然后在预构建步骤中使用预构建目标或自定义目标来验证文件是否存在

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="WaitOnFTP">
        <Exec Command="MyFTPWaiter.exe"/>
    </Target>
</Project>

其他更面向MSBuild的建议是将该exe重新生成为自定义任务,甚至是MSBuild 4.0中的内联任务

FWIW,我遇到过一个同行提出的类似解决方案,他不希望版本控制中的集成测试使用大型二进制文件,他要求在构建中使用自定义下载程序从SMB共享获取文件。它运行得很好


好奇。这听起来像是一个生产后构建步骤。目的是什么?一个构建步骤涉及到将数据ftp到目的地,并让目的地对其执行处理。在ftp服务器上远程创建文件是我知道目标是否已完成处理的唯一方法。这绝对不是一个简单的/典型的构建。@vicjugador-这一步是将源代码翻译成机器代码所必需的吗?或者这是你发布产品所必须做的事情?由于目前大多数商店都专注于快速CI环境,您的请求不同寻常,因为它与此目标背道而驰。是的,这是绝对必要的。。我正在做的项目肯定是不寻常的,有些步骤是无法改变的。所讨论的构建脚本涉及构建和执行数据迁移项目,因此MSBUILD肯定存在一些非典型用法(这也超出了我的控制/选择范围)。轮询文件是一个好主意,但您可以下载一些软件来为您实现这一点。有些可以同步本地文件夹和远程站点,有些可以将FTP站点映射到网络驱动器之类的驱动器号,有些可以配置为作为Windows服务运行,这些服务将按照您的建议执行,并不断轮询以显示特定的远程文件。其中一些是共享软件,一些是商业支持的东西。如果将来有人(而不是您)负责支持某个程序,您可能需要一个带有帮助文件的程序。@AlexPace-当然。我不会在我的构建服务器上安装这些东西,特别是如果写一个我可以放入版本控制的东西需要20分钟的工作的话。是的。。我希望有一个解决方案,不需要编写额外的代码。。看来这是唯一的办法。@vicjugador-很简单。如果你愿意,我们可以在本周的某个时候进行屏幕共享和配对。谢谢你的提议。。我同意你的看法,这很简单。。我对像这样的自定义exe有一种反感(尽管看起来我无论如何都得写一个..我只是在考虑使用Java和内置库。。我们团队的大多数人都没有VisualStudio,所以如果他们需要进行更改,我不想与他们竞争