Erstens, ich weiß, Silverlight-Projekt kann nicht auf nicht-Silverlight-basierte Projekt wie Windows-Klassenbibliothek oder Asp.net MVC-Projekt verweisen. Aber ich muss meine Projekte erstellen, die beide Silverlight-basierte Projekt & Asp.net MVC-Projekt unterstützen können.Ist es möglich, Silverlight 3-Klassenbibliothek von .NET 3.5-basierten Projekt in VS.net 2008 verweisen?
Also, ich erstellte Silverlight-basierte Projekt für meine Freigabe Quellcode. Es funktioniert gut auf VS.net 2008 &. NET 3.5 SP1. Allerdings habe ich einen Fehler gefunden, wenn ich versuche, eine Methode des Silverlight-basierten Projekts von .Net-basierten Projekten wie dem folgenden Code zu verwenden.
Silver-basierte Methode
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);
}
}
}
}
}
.NET-basierte Methode
private void Form1_Load(object sender, EventArgs e)
{
InitializeInstance(this);
}
Fehlerdetails
System.IO.FileNotFoundException : Konnte Datei oder Assembly nicht laden 'System, Version = 2.0.5.0, Kultur = neutral, PublicKeyToken = 7cec85d7bea7798e' oder eine seiner Abhängigkeiten. Das System kann die angegebene Datei nicht finden. Datei Name: 'System, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e' bei InitializeInstance (Object obj)
Schließlich habe ich versuchen, dieses Problem zu lösen, indem das Kopieren system.dll von Silverlight, um das Verzeichnis auszugeben und darauf zu verweisen. Es zeigt immer noch den gleichen Fehler. Also, ich denke, dass dieser Fehler eine Beschränkung beider .Net & Silverlight-Plattform sein kann. Haben Sie eine Idee, dieses Problem zu vermeiden?
PS. Ich weiß, dass ich this technique für einige Freigabecodes verwenden kann. Aber das ist unmöglich für meine Projekte. Weil es sehr kompliziert ist, & sehr komplex mehr als direkt Silverlight-basierte oder .Net-basierte Klassenbibliothek zu erstellen.
Danke,
Ich versuche, dieses Probelm zu lösen, indem alle Klassen zu entfernen, die in System.dll enthalten ist. Es funktioniert gut. Aber ich verstehe es nicht. Warum verursacht eine Klasse (die in System.Core.dll enthalten ist) keinen Fehler wie System.dll? –
Ich empfehle auf jeden Fall die Verwendung der Datei-Links, auch wenn Sie es nicht möchten. Welche Art von Code oder komplexe Objekte möchten Sie mithilfe der Dateiverknüpfungsmethode einfügen, die für Sie nicht funktioniert? –