#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.1 KiB

using System;
using System.IO;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Xml;
using System.Text;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.Core
{
public class ProjectContentRegistry
{
static Dictionary<string, IProjectContent> contents = new Dictionary<string, IProjectContent>();
public static IProjectContent GetMscorlibContent()
{
if (contents.ContainsKey("mscorlib")) {
return contents["mscorlib"];
}
contents["mscorlib"] = CaseSensitiveProjectContent.Create(typeof(object).Assembly);
return contents["mscorlib"];
}
public static IProjectContent GetProjectContentForReference(ReferenceProjectItem item)
{
if (item is ProjectReferenceProjectItem) {
return ParserService.GetProjectContent(((ProjectReferenceProjectItem)item).ReferencedProject);
}
if (contents.ContainsKey(item.FileName)) {
return contents[item.FileName];
}
if (contents.ContainsKey(item.Include)) {
return contents[item.Include];
}
Assembly assembly = null;
try {
assembly = Assembly.ReflectionOnlyLoadFrom(item.FileName);
if (assembly != null) {
contents[item.FileName] = CaseSensitiveProjectContent.Create(assembly);
return contents[item.FileName];
}
} catch (Exception) {
try {
assembly = Assembly.ReflectionOnlyLoad(item.Include);
if (assembly != null) {
contents[item.Include] = CaseSensitiveProjectContent.Create(assembly);
return contents[item.Include];
}
} catch (Exception e) {
Console.WriteLine("Can't load assembly '{0}' : " + e.Message, item.Include);
}
}
return null;
}
}
}