まず、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ベースのプロジェクトの一部のメソッドを次のコードのように使用しようとすると、何らかのエラーが発生しました。
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);
}
}
}
}
}
.NETベースの方法
private void Form1_Load(object sender, EventArgs e)
{
InitializeInstance(this);
}
エラー詳細
System.IO.FileNotFoundException : ファイルまたはアセンブリをロードできませんでした。 'System、Version = 2.0.5.0、 Culture =ニュートラル、 PublicKeyToken = 7cec85d7bea7798e'または 依存関係の1つ。システム は、指定されたファイルを見つけることができません。 ファイル名: 'システム、バージョン= 2.0.5.0、 文化=中立、 なPublicKeyToken = 7cec85d7bea7798e' でInitializeInstance(オブジェクトobj)最後に
、私はのSystem.dllのをコピーすることによってこの問題を解決しようとしますディレクトリを出力して参照するためのSilverlight。それでも同じエラーが表示されます。だから、私はこのエラーが両方の制限かもしれないと思います。& Silverlightプラットフォーム。この問題を避けるための考えはありますか?
PS。私はいくつかの共有コードのためにthis techniqueを使用できることを知っています。しかし、これは私のプロジェクトでは不可能です。それは非常に複雑なので&非常に複雑なSilverlightベースまたは.NETベースのクラスライブラリを直接作成する以上。デスクトップCLR上でのSilverlight、PresentationFrameworkまたはPresentationCoreでSystem.Windows:
おかげで、
この問題を解決するために、System.dllに含まれるすべてのクラスを削除します。それは正常に動作します。しかし、私は理解していません。なぜSystem.Core.dllに含まれるクラスによってSystem.dllのようなエラーが発生しないのですか? –
ファイルリンクを使用することをお勧めします。あなたには適していないファイルリンク方法を使用して、特定の種類のコードまたは複合オブジェクトを含めることを試みていますか? –