在TFS构建过程中,在预建事件中运行批处理文件(*.bat)并找到其输出



我已经在TFS 2013上创建了一个构建定义,在构建定义的"构建过程"过程中,有5个部分用于构建过程参数

  1. TF版本控制
  2. 构建
  3. 测试
  4. 发布符号
  5. 高级

在构建部分中有5个子部分

  1. 项目
  2. 配置
  3. 清洁构建
  4. 输出位置
  5. 高级。

在高级部分中,有一个选项的" pre-Build脚本参数"&" prebuild脚本路径"。

在" prebuild脚本路径"中,我提供了批处理文件的路径。

此批次文件调用一个在同一位置可用的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文件,所以我可以在哪里检查该文件?

我已经完成了这些链接

VS2012中的构建事件..运行批处理文件

在预构建事件中执行批处理文件的问题

,但他们在说他们的构建失败了,但在我的情况下,构建并没有失败,而是要花费太长时间。

对不起,如果这个问题无关紧要,或者我犯了一些错误。我是TFS建立集成的新手,并且不太了解所有这些过程。

我能够在浏览Stijn提供的提示后解决我的问题。

以下是Stijn提供的提示。您可以在评论中找到相同的内容。

  1. 不要依靠当前的工作目录,这几乎总是不好的做法。而是使用完整的路径(硬编码或通过例如将项目的目录作为参数传递给您的EXE),因此至少您知道在哪里可以找到TXT文件。

  2. 如果您的构建挂起,它正在等待用户输入。您的exe可能崩溃了,正在显示对话框以附加调试器

  3. 如果您的批处理文件确实如图所示,则不需要它:只需直接调用EXE。

  4. 您可以将控制台输出添加到批处理文件/EXE以检查它在做什么,应在TFS

  5. 中输出。

然后我做以下操作。

  1. 将EXE文件路径直接作为"预构建脚本PAT"并删除批处理文件。
  2. 通过"预构建脚本参数"的参数列表,并在控制台应用程序中作为参数处理。
  3. 将框架版本从.NET 4.6更改为.NET 4.5,因为TFS服务器是TFS 2013,其他应用程序正在使用.NET 4.5。
  4. 创建版本的构建或调试构建。

仍然我遇到了一个问题,我无法在物理位置上创建一个文件,但是我只打算检查我从"构建前脚本参数"框中传递的任何内容都应在EXE文件中收到。<<<<<<<<<<<<<<

因此,我读了所有这些论点并将其附加为文件名,然后显示出无法创建文件名" ABC_10,20,30,30,40,50.txt",其中" 10,20,30,30,40,50"是我通过的论点。

因此,它确保我可以在EXE文件中获取所有这些参数。

此解决方案的所有信用都归功于Stijn。

相关内容

  • 没有找到相关文章

最新更新