首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何针对多个.NET版本在Albacore中运行msbuild任务?

如何针对多个.NET版本在Albacore中运行msbuild任务?
EN

Stack Overflow用户
提问于 2012-09-04 16:16:26
回答 1查看 926关注 0票数 1

我正在考虑使用rake和albacore来自动构建我创建的库。我想向使用.NET 2.0、.NET 3.5、.NET 4.0和.NET 4.5的用户提供这个库。代码没有什么特别之处,它应该移植得很好。

我真正想要的是一个rake构建脚本,它将为每个平台构建程序集。研究似乎是一个设置ToolsVersion的问题,但我一直未能让它发挥作用。

是否有任何最佳实践,如何做到这一点的例子?还是我需要一个不同的构建工具?

更新:--我只需提供shell中的命令行args就能让它工作,但仍然没有让它与一起工作。

EN

回答 1

Stack Overflow用户

发布于 2012-09-27 21:08:30

Albacore msbuild任务和相关的配置对象使用一些伏都教自动查找和设置默认的MSBuild exe版本。它基于泛型命令行任务,因此它有一个command参数。

代码语言:javascript
复制
self.command = File.join(get_net_version(netversion), "MSBuild.exe")

您可以手动设置命令选项并定义许多任务。

代码语言:javascript
复制
task :build_all_versions => [ :build_net20, :build_net35, :build_net40 ]

msbuild :build_net20 do |msb|
  msb.command = 'C:/Windows/Microsoft.NET/Framework/v2.0.50727/msbuild.exe'
end

msbuild :build_net35 do |msb|
  msb.command = 'C:/Windows/Microsoft.NET/Framework/v3.5/msbuild.exe'
end

msbuild :build_net40 do |msb|
  msb.command = 'C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe'
end

或者,您可以使用内部长轴模/方法获取msbuild.exe路径。它定义了一个私有模块方法,因此您必须对其进行include

代码语言:javascript
复制
include Configuration::NetVersion

msbuild :build_net20 do |msb|
  msb.command = File.join(get_net_version :net20, 'msbuild.exe')
  ...
end

此时,我将基于.NET版本符号数组动态定义任务。

代码语言:javascript
复制
net_versions = [ :net20, :net35, :net40 ]
build_tasks  = net_versions.map { |ver| "build_#{ver}" }

task :build_all => build_tasks

net_versions.zip(build_tasks) do |ver, task|
    msbuild task do |msb|
      msb.command = File.join(get_net_version ver, 'msbuild.exe')
      # all the other stuff
    end
end

没有.NET 3.0工具,他们使用的是.NET 2.0工具,显然

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12267527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档