我在TFS 2013上创建了一个构建定义,在构建定义的流程选项卡中,有5个部分用于构建流程参数
在Build部分中有5个子部分
Inside Advanced部分中有一个“预构建脚本参数”选项& “prebuild script path”。
在“预建脚本路径”中,我提供了批处理文件的路径。
此批处理文件调用在同一位置可用的exe文件。在批处理文件中,我写了以下几行
start "My Project" MyProject.exe
MyProject.exe是一个控制台应用程序,代码如下
string[] lines = { "First line", "Second line", "Third line" };
string fileName2 = DateTime.Now.ToLongDateString().Replace("//","_").Replace(",","_") + DateTime.Now.ToLongTimeString().Replace(":", "_").Replace(" ","") + ".txt";
System.IO.File.WriteAllLines(fileName2, lines);
现在我正在运行这个TFS构建应用程序,然后它在预构建事件上花费了太多时间。 它运行了最后50分钟然后我停止了它。
在添加批处理脚本之前,构建过程工作正常。
现在我的问题是,如何确保我在批处理脚本中编写的内容成功运行并且exe文件正在编写* .txt文件,以便在哪里可以检查该文件? < / p>
我已经浏览了这些链接
Post build event in VS2012..Running a Batch file
Problem Executing Batch File in Pre-Build Event
但是他们说他们的构建失败但在我的情况下构建并没有失败,而是需要花费太长时间。
很抱歉,如果这个问题无关紧要,或者我犯了一些错误。我是TFS构建集成的新手,并不太了解所有这些流程。
答案 0 :(得分:1)
我可以在完成stijn提供的提示后解决我的问题。
以下是stijn给出的TIPS。您可以在评论中找到相同的内容。
不要依赖当前的工作目录,这几乎总是不好的做法。而是使用完整路径(硬编码,或传递例如项目的目录作为你的exe的参数),所以至少你知道在哪里找到你的txt文件。
如果您的构建挂起,则等待用户输入。可能是您的exe崩溃并且正在显示一个附加调试器的对话框
如果你的批处理文件真的如图所示,你不需要它:只需直接调用exe。
您可以将控制台输出添加到批处理文件/ exe以检查它在做什么,这应该在TFS中输出
然后我会做以下事情。
我仍然遇到一个问题,我无法在物理位置创建文件,但我只打算检查我在“预构建脚本参数”框中传递的内容应该在exe文件中接收。< / p>
所以我读了所有这些参数并将其作为文件名附加,然后显示无法创建文件名“abc_10,20,30,40,50.txt”,其中“10,20,30,40,50”是我通过的论点。
因此,它确保我可以在exe文件中获取所有这些参数。
此解决方案的所有功劳都归功于stijn。