~ubuntu-branches/ubuntu/oneiric/monodevelop/oneiric

« back to all changes in this revision

Viewing changes to src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MsNetFrameworkBackend.cs

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2011-06-27 17:03:13 UTC
  • mto: (1.8.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 54.
  • Revision ID: james.westby@ubuntu.com-20110627170313-6cvz3s19x6e9hqe9
ImportĀ upstreamĀ versionĀ 2.5.92+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
{
34
34
        public class MsNetFrameworkBackend: TargetFrameworkBackend<MsNetTargetRuntime>
35
35
        {
 
36
                public override bool IsInstalled {
 
37
                        get {
 
38
                                //TODO: it should be possible to support any framework by reading the MS framework definition files
 
39
                                return base.IsInstalled;
 
40
                        }
 
41
                }
 
42
                
36
43
                public override IEnumerable<string> GetFrameworkFolders ()
37
44
                {
38
 
                        switch (framework.Id) {
 
45
                        if (framework.Id.Identifier != TargetFrameworkMoniker.ID_NET_FRAMEWORK)
 
46
                                yield break;
 
47
                        
 
48
                        switch (framework.Id.Version) {
39
49
                        case "1.1":
40
50
                        case "2.0":
41
51
                        case "4.0":
43
53
                                break;
44
54
                        case "3.0":
45
55
                        case "3.5":
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 ();
69
79
 
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));
77
87
                        } else
78
88
                                yield return Path.Combine (sdkPath, "v6.0A\\bin");
79
89
 
80
 
                        foreach (string s in base.GetToolsPaths ())
 
90
                        foreach (string s in BaseGetToolsPaths ())
81
91
                                yield return s;
82
92
                        yield return PropertyService.EntryAssemblyPath;
83
93
                }
84
 
                
 
94
 
 
95
                //base isn't verifiably accessible from the enumerator so use this private helper
 
96
                IEnumerable<string> BaseGetToolsPaths ()
 
97
                {
 
98
                        return base.GetToolsPaths ();
 
99
                }
 
100
 
85
101
                string GetFrameworkToolsPath ()
86
102
                {
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));
89
106
 
90
 
                        if (framework.Id == "3.0")
 
107
                        if (version == "3.0")
91
108
                                return targetRuntime.RootDirectory.Combine (GetClrVersion (ClrVersion.Net_2_0));
92
109
 
93
 
                        return targetRuntime.RootDirectory.Combine ("v" + framework.Id);
 
110
                        return targetRuntime.RootDirectory.Combine ("v" + version);
94
111
                }
95
112
                
96
113
                internal static string GetClrVersion (ClrVersion v)