34
34
public class MsNetFrameworkBackend: TargetFrameworkBackend<MsNetTargetRuntime>
36
public override bool IsInstalled {
38
//TODO: it should be possible to support any framework by reading the MS framework definition files
39
return base.IsInstalled;
36
43
public override IEnumerable<string> GetFrameworkFolders ()
38
switch (framework.Id) {
45
if (framework.Id.Identifier != TargetFrameworkMoniker.ID_NET_FRAMEWORK)
48
switch (framework.Id.Version) {
46
RegistryKey fxFolderKey = Registry.LocalMachine.OpenSubKey (@"SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\v" + framework.Id, false);
56
RegistryKey fxFolderKey = Registry.LocalMachine.OpenSubKey (@"SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\v" + framework.Id.Version, false);
47
57
if (fxFolderKey != null) {
48
58
string folder = fxFolderKey.GetValue ("All Assemblies In") as string;
49
59
fxFolderKey.Close ();
70
80
string sdkPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ProgramFiles), "Microsoft SDKs");
71
81
sdkPath = Path.Combine (sdkPath, "Windows");
72
if (framework.Id == "4.0")
82
if (framework.Id.Version == "4.0")
73
83
yield return Path.Combine (sdkPath, "v7.0A\\bin\\NETFX 4.0 Tools");
74
else if (framework.Id == "3.5") {
84
else if (framework.Id.Version == "3.5") {
75
85
yield return Path.Combine (sdkPath, "v7.0A\\bin");
76
86
yield return targetRuntime.RootDirectory.Combine (GetClrVersion (ClrVersion.Net_2_0));
78
88
yield return Path.Combine (sdkPath, "v6.0A\\bin");
80
foreach (string s in base.GetToolsPaths ())
90
foreach (string s in BaseGetToolsPaths ())
82
92
yield return PropertyService.EntryAssemblyPath;
95
//base isn't verifiably accessible from the enumerator so use this private helper
96
IEnumerable<string> BaseGetToolsPaths ()
98
return base.GetToolsPaths ();
85
101
string GetFrameworkToolsPath ()
87
if (framework.Id == "1.1" || framework.Id == "2.0" || framework.Id == "4.0")
103
var version = framework.Id.Version;
104
if (version == "1.1" || version == "2.0" || version == "4.0")
88
105
return targetRuntime.RootDirectory.Combine (GetClrVersion (framework.ClrVersion));
90
if (framework.Id == "3.0")
107
if (version == "3.0")
91
108
return targetRuntime.RootDirectory.Combine (GetClrVersion (ClrVersion.Net_2_0));
93
return targetRuntime.RootDirectory.Combine ("v" + framework.Id);
110
return targetRuntime.RootDirectory.Combine ("v" + version);
96
113
internal static string GetClrVersion (ClrVersion v)