我已经在TFS 2013上创建了一个构建定义,在构建定义的"构建过程"过程中,有5个部分用于构建过程参数
- TF版本控制
- 构建
- 测试
- 发布符号
- 高级
在构建部分中有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提供的提示。您可以在评论中找到相同的内容。
-
不要依靠当前的工作目录,这几乎总是不好的做法。而是使用完整的路径(硬编码或通过例如将项目的目录作为参数传递给您的EXE),因此至少您知道在哪里可以找到TXT文件。
-
如果您的构建挂起,它正在等待用户输入。您的exe可能崩溃了,正在显示对话框以附加调试器
-
如果您的批处理文件确实如图所示,则不需要它:只需直接调用EXE。
-
您可以将控制台输出添加到批处理文件/EXE以检查它在做什么,应在TFS
中输出。
然后我做以下操作。
- 将EXE文件路径直接作为"预构建脚本PAT"并删除批处理文件。
- 通过"预构建脚本参数"的参数列表,并在控制台应用程序中作为参数处理。
- 将框架版本从.NET 4.6更改为.NET 4.5,因为TFS服务器是TFS 2013,其他应用程序正在使用.NET 4.5。
- 创建版本的构建或调试构建。
仍然我遇到了一个问题,我无法在物理位置上创建一个文件,但是我只打算检查我从"构建前脚本参数"框中传递的任何内容都应在EXE文件中收到。<<<<<<<<<<<<<<
因此,我读了所有这些论点并将其附加为文件名,然后显示出无法创建文件名" ABC_10,20,30,30,40,50.txt",其中" 10,20,30,30,40,50"是我通过的论点。
因此,它确保我可以在EXE文件中获取所有这些参数。
此解决方案的所有信用都归功于Stijn。