Class: MSBuild
Class Method Summary collapse
- .get_build_commands(sln_filename) ⇒ Object
- .get_configurations(sln_filename) ⇒ Object
- .get_platforms(sln_filename) ⇒ Object
- .get_version(version) ⇒ Object
- .get_vs_version(sln_filename) ⇒ Object
- .has_version?(version) ⇒ Boolean
- .in_path? ⇒ Boolean
Instance Method Summary collapse
- #add(key, name) ⇒ Object
-
#initialize ⇒ MSBuild
constructor
@@ignore_configurations=Array.new.
Methods inherited from Hash
Constructor Details
#initialize ⇒ MSBuild
@@ignore_configurations=Array.new
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/apps/msbuild.rb', line 16 def initialize add(:vs9, "C:/Windows/Microsoft.NET/Framework/v3.5/msbuild.exe") add(:vs10, "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe") add(:vs12, "C:/Program Files (x86)/MSBuild/12.0/bin/msbuild.exe") add(:vs14, "C:/Program Files (x86)/MSBuild/14.0/bin/msbuild.exe") add(:vs15, "C:/Program Files (x86)/MSBuild/15.0/bin/msbuild.exe") add(:vs15, "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/MSBuild/15.0/Bin/MSBuild.exe") if File.exist?("C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/Bin/MSBuild.exe") add(:vs15, "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/Bin/MSBuild.exe") end if File.exist?("C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/MSBuild/Current/Bin/MSBuild.exe") add(:vs16, "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/MSBuild/Current/Bin/MSBuild.exe") end if File.exist?("C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/MSBuild/Current/Bin/MSBuild.exe") add(:vs16, "C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/MSBuild/Current/Bin/MSBuild.exe") end if File.exist?("C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe") add(:vs16, "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe") end if File.exist?("C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/MSBuild/Current/Bin/MSBuild.exe") add(:vs16, "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/MSBuild/Current/Bin/MSBuild.exe") end end |
Class Method Details
.get_build_commands(sln_filename) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/apps/msbuild.rb', line 118 def self.get_build_commands(sln_filename) build_commands = nil vs_version = MSBuild.get_vs_version(sln_filename) puts "vs version for '#{sln_filename}' : #{vs_version}" if MSBuild.has_version?(vs_version) MSBuild.get_configurations(sln_filename).each do |configuration| MSBuild.get_platforms(sln_filename).each do |platform| build_commands = [] if build_commands.nil? msbuild_arg = MSBuild.get_version(vs_version) msbuild_arg = "\"#{MSBuild.get_version(vs_version)}\"" if msbuild_arg.include?(" ") sln_arg = sln_filename sln_arg = "\"#{sln_filename}\"" if sln_filename.include?(" ") platform_arg = "/p:Platform=#{platform}" platform_arg = "/p:Platform=\"#{platform}\"" if platform.include?(" ") build_commands << "#{msbuild_arg} #{sln_arg} /p:Configuration=#{configuration} #{platform_arg}" end end end build_commands end |
.get_configurations(sln_filename) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/apps/msbuild.rb', line 95 def self.get_configurations(sln_filename) configs = [] sln_text = File.read(sln_filename, encoding: "UTF-8") sln_text.scan(/= (\w+)\|/).each do |m| c = m.first.to_s ignore = false ignore = true if defined?(IGNORE_CONFIGURATIONS) && IGNORE_CONFIGURATIONS.include?(c) configs << c if !ignore && !configs.include?(c) end configs end |
.get_platforms(sln_filename) ⇒ Object
107 108 109 110 111 112 113 114 115 116 |
# File 'lib/apps/msbuild.rb', line 107 def self.get_platforms(sln_filename) platforms = [] sln_text = File.read(sln_filename, encoding: "UTF-8") # sln_text.scan( /= [\w]+\|([\w ]+)/ ).each{|m| sln_text.scan(/\|([\w\d\s]+)\s*=/).each do |m| p = m.first.to_s.strip platforms << p unless platforms.include?(p) end platforms end |
.get_version(version) ⇒ Object
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/apps/msbuild.rb', line 63 def self.get_version(version) return "msbuild" if MSBuild.in_path? if defined?(MSBUILD) MSBUILD[version] else msb = MSBuild.new msb[version] end end |
.get_vs_version(sln_filename) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/apps/msbuild.rb', line 74 def self.get_vs_version(sln_filename) if sln_filename.nil? return :vs16 if has_version? :vs16 return :vs15 if has_version? :vs15 return :vs14 end sln_text = File.read(sln_filename, encoding: "UTF-8") return :vs16 if sln_text.include?("Visual Studio Version 16") return :vs15 if sln_text.include?("VisualStudioVersion = 15.") return :vs9 if sln_text.include?("Format Version 10.00") return :vs12 if sln_text.include?("12.0.30723.0") return :vs12 if sln_text.include?("Visual Studio 2013") return :vs12 if sln_text.include?("12.0.31101.0") return :vs14 if sln_text.include?("VisualStudioVersion = 14.0.") return :vs16 if has_version? :vs16 return :vs15 if has_version? :vs15 :vs14 end |
Instance Method Details
#add(key, name) ⇒ Object
40 41 42 |
# File 'lib/apps/msbuild.rb', line 40 def add(key, name) self[key] = name if File.exist?(name) end |