2011-09-22 57 views
0

作为构建过程的一部分..我想阻止构建,直到远程创建(存在)文件到ftp位置,之后我将继续构建。 (最好有一些超时限制)。MSBUILD - 直到文件存在于ftp服务器上为止?

对此提出建议?

这甚至可能只使用标准的msbuild任务和/或extensionPack/communitytask?

+2

好奇。这听起来像是一个生产,后期构建步骤。意图是什么? –

+0

一个构建步骤涉及将数据ftp到目标,并让目标对其执行处理。远程创建ftp服务器上的文件是我知道目标是否已完成处理的唯一途径。它肯定不是一个简单/典型的构建。 – vicsz

+0

@ vicjugador-这个步骤对于你的源代码被翻译成机器代码是绝对必需的吗?或者这是你必须做的发布产品?由于现在大多数商店都将注意力集中在快速的CI环境上,因此您的请求与您的目标背道而驰。 –

回答

1

你最好打赌的是建立一个小的自定义exe文件(你甚至可以编译它作为一个构建步骤)来查询你正在查找的文件。然后使用PreBuild目标或预生成步骤中的自定义目标来验证文件是否存在。

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

其他更多面向的MSBuild的建议是翻拍的是exe文件自定义任务,或4.0的MSBuild甚至联任务。

FWIW,我遇到过一个类似的解决方案,他不想在版本控制中使用集成测试使用的大型二进制文件,他需要使用构建中的自定义下载器来从SMB中获取文件分享。它工作得很好。

Custom Tasks

Inline Tasks

+0

该文件的轮询是一个好主意,但有一个软件可以下载,这将为你做到这一点。有一些同步本地文件夹和远程站点,有一些允许您将FTP站点映射到驱动器盘符(如网络驱动器),还有一些可以配置为作为Windows服务运行,这将作为你建议并不断地查询出现的特定远程文件。其中一些是共享软件,一些是商业软件。如果未来有人会负责支持它,可能需要带有帮助文件的程序。 – AlexPace

+0

@AlexPace - 当然。我不会在我的构建服务器上安装任何软件,特别是如果它有20分钟的时间写一个可以加入版本控制的工作。 –

+0

是的..我希望有一个解决方案,不涉及编写额外的代码..看起来这是唯一的方法来做到这一点。 – vicsz

相关问题