Skip to content

Instantly share code, notes, and snippets.

@jarib
Forked from anonymous/gist:880179
Created March 21, 2011 20:43
Show Gist options
  • Save jarib/880187 to your computer and use it in GitHub Desktop.
Save jarib/880187 to your computer and use it in GitHub Desktop.
module CrazyFunDotNet
class DotNetLibrary < Tasks
private
def reference_assemblies_dir()
@reference_assemblies_dir ||= (
program_files_dir = find_env(['ProgramFiles(x86)', 'programfiles(x86)', 'PROGRAMFILES(X86)'], "C:/Program Files (x86)")
unless File.exists? program_files_dir
program_files_dir = find_env(['ProgramFiles', 'programfiles', 'PROGRAMFILES'], "C:/Program Files")
end
File.join(program_files_dir, 'Reference Assemblies', 'Microsoft', 'Framework')
)
end
def framework_dir()
@framework_dir ||= (
windows_dir = find_env(['WinDir', 'windir', 'WINDIR'], "C:/Windows")
File.join(windows_dir, 'Microsoft.NET', 'Framework')
)
end
def resolve_framework_reference(ref, version)
if version == "3.5"
assembly = File.join(reference_assemblies_dir(), "v" + version, ref)
unless File.exists? assembly
assembly = File.join(framework_dir(), "v2.0.50727", ref)
end
return assembly.to_s
end
return File.join(reference_assemblies_dir(), '.NETFramework', "v" + version, ref).to_s
end
def find_env(possible_vars, fallback)
possible_vars.find { |e| ENV[e] } or fallback
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment