Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何通过管道将msbuild输出从rake传输到日志文件_Ruby_Rake_Albacore - Fatal编程技术网

Ruby 如何通过管道将msbuild输出从rake传输到日志文件

Ruby 如何通过管道将msbuild输出从rake传输到日志文件,ruby,rake,albacore,Ruby,Rake,Albacore,我正在使用神奇的albacore gem和rake来构建一个新的.NET项目。我的组织仍在使用NAnt,很多人希望在执行构建脚本时看到日志文件。如何将转储到STDOUT的msbuild任务输出保存到日志文件中?我想出了一个解决方案。对于我们的CI服务器(hudson),我们并不真正需要一个构建日志文件,但是当构建在本地运行时,有物理文件来检查还是不错的,特别是当我们正在进行签入并且构建失败时 幸运的是,albacore dudes足够聪明,创建了一个“.parameters”选项,可以与任何命令

我正在使用神奇的albacore gem和rake来构建一个新的.NET项目。我的组织仍在使用NAnt,很多人希望在执行构建脚本时看到日志文件。如何将转储到STDOUT的msbuild任务输出保存到日志文件中?

我想出了一个解决方案。对于我们的CI服务器(hudson),我们并不真正需要一个构建日志文件,但是当构建在本地运行时,有物理文件来检查还是不错的,特别是当我们正在进行签入并且构建失败时

幸运的是,albacore dudes足够聪明,创建了一个“.parameters”选项,可以与任何命令行工具任务一起使用,以添加该任务未显式处理的参数。因此,例如,您可以向msbuild任务添加一个参数,以指定msbuild的日志文件。它有点像这样:

BUILD_REPORTS = 'BuildReports'
MSBUILD_EXE = "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe"

directory BUILD_REPORTS

CLEAN.include BUILD_REPORTS

task :default => [:build]

desc "Build the solution"
msbuild :build => BUILD_REPORTS do |msb|
    msb.properties :configuration => :Debug
    msb.path_to_command = MSBUILD_EXE
    msb.targets :Clean, :Build
    msb.solution = "./mysolution.sln"
    msb.parameters "/l:FileLogger,Microsoft.Build;logfile=" + log_file("build")
end

def log_file(log_file_name)
    BUILD_REPORTS + log_file_name + ".log"
end

我们的rakefile要比这复杂一点,因为它需要做更多的事情,但是你明白了。

你是如何运行你的rake任务的?从CI服务器?从命令行?或者?嗨,德里克-现在,我正在从命令行运行,很快我们将把它连接到哈德逊。我们已经说服人们,如果没有rake执行中的物理日志文件,hudson会很好。我想,通过在msbuild和nunit任务上使用“.parameters”选项来记录输出,我已经满足了对日志文件的需求。我爱阿尔巴科尔!你们做得很好,酷。是的,我觉得没有必要从hudson那里获取日志文件,因为hudson将所有标准数据都捕获到自己的日志中。但是如果您需要从命令行使用它,我想您可以将STDOUT重定向到一个文件:rake>>build.logIt保存msbuild日志文件很方便,因为如果让hudson只扫描该文件而不是整个生成输出,那么您的生成可能会快得多。msbuild日志文件解析器非常慢,构建输出(至少我们的)可能非常详细。