첫째, Silverlight 프로젝트는 Windows 클래스 라이브러리 나 Asp.net MVC 프로젝트와 같은 Silverlight가 아닌 프로젝트를 참조 할 수 없다는 것을 알고 있습니다. 하지만 Silverlight 기반 프로젝트 & Asp.net MVC 프로젝트를 모두 지원할 수있는 프로젝트를 만들어야합니다.VS.net 2008에서 .Net 3.5 기반 프로젝트로 Silverlight 3 클래스 라이브러리를 참조 할 수 있습니까?
그래서 공유 소스 코드로 Silverlight 기반 프로젝트를 만들었습니다. VS.net 2008 & .Net 3.5 SP1에서 제대로 작동합니다. 그러나 .NET 기반 프로젝트에서 Silverlight 기반 프로젝트의 일부 메서드를 사용하려고하면 다음 코드와 같은 오류가 발생합니다.
실버 라이트 기반의 방법
public static void InitializeInstance(object obj)
{
// Initialize Field Value
foreach (FieldInfo fi in obj.GetType().GetFields())
{
foreach (Attribute attr in fi.GetCustomAttributes(true))
{
if (attr is DefaultValueAttribute)
{
DefaultValueAttribute dv = (DefaultValueAttribute)attr;
fi.SetValue(obj, dv.Value);
}
}
}
// Initialize Property Value
foreach (PropertyInfo pi in obj.GetType().GetProperties())
{
foreach (Attribute attr in pi.GetCustomAttributes(true))
{
if (attr is DefaultValueAttribute)
{
DefaultValueAttribute dv = (DefaultValueAttribute)attr;
if (pi.CanWrite)
{
pi.SetValue(obj, dv.Value, null);
}
}
}
}
}
닷넷 기반의 방법
private void Form1_Load(object sender, EventArgs e)
{
InitializeInstance(this);
}
오류 상세
System.IO.FileNotFoundException : 파일 또는 어셈블리를로드 할 수 없습니다. 'System, Version = 2.0.5.0, Culture = 중립, PublicKeyToken = 7cec85d7bea7798e'또는 종속성 중 하나입니다. 시스템 은 지정된 파일을 찾을 수 없습니다. 파일 이름 : '시스템, 버전 = 2.0.5.0, 문화 = PublicKeyToken = 7cec85d7bea7798e 중립'
마지막으로, 나는의 System.dll을 복사하여이 문제를 해결하려고 InitializeInstance (개체 OBJ)에서 디렉토리를 출력하고 참조하기위한 Silverlight. 여전히 같은 오류를 보여줍니다. 그래서,이 오류는 양쪽 모두의 제한 일 수 있다고 생각합니다. & Silverlight 플랫폼. 이 문제를 피하기위한 아이디어가 있습니까?
추신. 몇 가지 공유 코드로 this technique을 사용할 수 있다는 것을 알고 있습니다. 그러나 내 프로젝트에이 작업을 수행하는 것은 불가능합니다. 그것은 매우 복잡하기 때문에 &은 Silverlight 기반 또는 .Net 기반 클래스 라이브러리를 직접 작성하는 것보다 훨씬 복잡합니다. 데스크톱 CLR에 실버, PresentationFramework 또는 PresentationCore에 System.Windows :
덕분에,
나는 System.dll에 포함 된 모든 클래스를 제거하여이 문제를 해결하려고합니다. 잘 작동합니다. 그러나 나는 이해하지 못한다. 일부 클래스 (System.Core.dll에 포함되어 있음)가 System.dll과 같은 오류를 발생시키지 않는 이유는 무엇입니까? –
파일 링크를 사용하는 것이 좋습니다. 어떤 특정 유형의 코드 또는 복잡한 개체가 당신을 위해 작동하지 않는 파일 링크 방법을 사용하여 포함 시키려고합니까? –