4

Silverlight 4 クラス ライブラリを参照する WPF .NET 4.0 クラス ライブラリがあります。

SL ライブラリは正常にコンパイルされますが、WPF クラス ライブラリをコンパイルすると、次のようになります。

Error   2   Unknown build error, 'Cannot resolve dependency to assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.'    MyProj.Presentation.Wpf

問題はここで言及されているものと似ているに違いないと思います: http://markti.spaces.live.com/blog/cns!D92CF278F0F91957!273.entry

しかし、私の WPF ライブラリには、SL ライブラリからユーザー コントロールを参照する XAML が含まれていません。実際、私の SL ライブラリには XAML がまったく含まれていません。ただし、EventCommander (UI 要素のイベントをコマンドにバインド) や一部の DataTemplate ヘルパーなど、いくつかの共有 DependencyObject があります。

ここで問題を絞り込む方法はありますか? また、.NET 4.0 から SL4 プロジェクトで UI 要素を効果的に参照する方法を見つけた人はいますか?

ありがとう。

4

3 に答える 3

4

これ

完全な .NET アセンブリからの System.Windows 参照を使用して SL4 アセンブリを参照する方法を知っている人はいますか (ファイルをリンクして、維持する 2 つの異なるプロジェクトを作成するだけではありません)。

現時点では不可能です。.NET プロジェクトでの SL アセンブリの参照は、SL プロジェクトがmscorlib、System、System.Core、System.ComponentModel.Composition、およびMicrosoft.VisualBasic以外のアセンブリを参照していない場合にのみ機能します。WPF プロジェクトを追加し、SL ファイルをそのプロジェクトにリンクすることが、System.Windows などを使用している場合に SL コードを再利用できる唯一の方法です。

乾杯、アレックス

于 2010-06-07T07:37:49.017 に答える
2

私は遅れているかもしれませんが、これはまだ答えられていません。

VisualStudio 2010 にはプラグインがあり、.NET、Silverlight、Windows Phone、xbox 上の XNA で参照できるアセンブリを作成できます。それはポータブルライブラリと呼ばれます。

http://blogs.msdn.com/b/bclteam/archive/2011/01/19/announce-portable-library-tools-ctp-justin-van-patten.aspx

于 2011-05-04T10:05:06.487 に答える
0

それを見つけた!SL4 クラス ライブラリで次のような xmlns 名前空間を定義しました。

using System.Windows.Markup;

[assembly: XmlnsDefinition("http://MyProj/Presentation", "MyProj.Presentation")]
[assembly: XmlnsDefinition("http://MyProj/Presentation", "MyProj.Presentation.Controls")]

そのため、WPF アセンブリがそれを参照できず、前述のエラーが発生しました。名前空間宣言を WPF プロジェクトに移動して修正しました...

[編集]

さて、これで問題は解決しました...しかし、完全な.NETアセンブリからのSystem.Windows参照を使用してSL4アセンブリを参照する方法を知っている人はいますか(ファイルをリンクして、維持する2つの異なるプロジェクトを作成するだけではありません)?

于 2010-06-05T22:43:39.230 に答える