2011-01-05 50 views
1

私はかなり大きなソリューションをいくつかのクラスライブラリと他のものと同様に、内部にいくつかのSilverlightとWPFプロジェクトを持っています。プロジェクトのSystem.Windowsがありません

一つはSystem.Windows

を参照している。しかし、実行時にSilverlightアプリケーションを参照するクラスライブラリである、私はエラーを取得:

{"Could not load file or assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.":"System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"}

私はGAC(C:\Windows\assembly)に見えましたそこにそれを見ることができませんでした...

ここでは何が起こりますか?

参照先は次のとおりです。c:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\System.Windows.dllが存在します。

+0

Silverlightアプリケーションを参照するクラスライブラリですか?あなたはそれを後方に持っていますか? – Amy

+0

実際には、私はそれが奇妙に聞こえるのは分かっていますが、それは現時点で行われていることです...いずれにしても、私はそのSystem.Windows DLLを参照する必要がありますか? – Mark

答えて

3

あなたのWPFアプリケーションのようなサウンドは、Silverlightアセンブリを参照するクラスライブラリをロードしています。それはうまくいかない、猫と犬。アセンブリがWPFとSilverlightの両方のアプリケーションで参照されている場合は、異なるフレームワークアセンブリ参照で2回コンパイルする必要があります。それには2つのプロジェクトが必要です。 WPFとSilverlightを別々のソリューションに分けておくことは、トラブルを避ける最善の方法です。

+0

SilverlightとWPF固有のコードを別々にして、どうやって行くのかを見てみましょう – Mark

+0

いいえ、コードではありません(それは問題かもしれませんが)。 –

+0

私が参照しようとしているプロジェクトは、System.Windowsのクラスを使ってWebRequestsやJsonの解析などを行うSilverlightプロジェクトです.WPFプロジェクトでもやってみたいものです。同じ方法でAzureのデータにアクセスする2つのSilverlightプロジェクトとWPFプロジェクト間で共有できるプロジェクトであると考えられますが、データを別々に使用します(2つの別個のクライアントのように)。 – Mark

1

私はここに適用される場合があります2つのケースで同様のエラーを見てきました:私は参照アセンブリは、私が参照されていません組み立てる必要

  1. 。 。 。この場合は、System.Windowsが参照を追加するために必要なものを使用していることを意味します。

  2. もっと興味深いのは、実際に ".Net Framework 4"( "クライアントプロファイル"なし)が必要なときにVS2010が自動的に ".Net Framework 4 Client Profile"を選択したときです。プロジェクトのプロパティを選択し、設定が何であるかを確認します。あなたパー

フランク

追加の指示を要求:VS2010で

オープン・ソリューションを、右の質問(ない溶液ライン)でプロジェクトをクリックして、下から「プロパティ」を選択します。作成されたGUIで「アプリケーション」タブを選択し、「ターゲットフレームワーク」にその名前に「クライアントプロファイル」がないことを確認します。 。 。 「.NET Framework 4 Client Profile」ではなく「.NET Framework 4」である必要があります。

+0

ああ、私は#2 。それは陰気だ。 – Amy

+0

#2を確認するにはどうすればよいですか?私はプロジェクトのプロパティを開いており、 'Target Silverlight version'の唯一のオプションは' Silverlight 4'と 'Silverlight 3'です。 – Mark

+0

Silverlightはクライアントプロファイルを持っていません。あなたは良いオレのレギュラーCLRでのみそれに遭遇します。 – Amy

1

私はどこにも、この解決策を見つけましたが、エラーメッセージが私の状況に少し誤解を招くようだった試行錯誤バイ火災...

としてそれにつまずいていません。ヒントは、実際には "System.Windows"アセンブリ自体ではなく、のの1つです。

  • System.Windows
  • System.Windows.Controls
  • System.Windows:あなたがやりたいことは何

    はあなたのGACをチェックし、これらのアセンブリの一つは、それにしているかどうかを確認することです。コントロール。ツールキット

  • System.Windows.Controls.Layout。ツールキット

GACから削除してから、再構築してください。それが動作しない場合は、2つのWindowsエクスプローラウィンドウを開き、c:¥Program Files(x86)¥Reference Assemblies¥Microsoft¥Framework¥Silverlight¥v4.0¥System.Windows.dllフォルダまたはあなたのSilverlight Toolkit用のフォルダを作成すると、どこから始めたのでしょうか。 Visual Studio 2010コンパイラは、GACアセンブリが常にアセンブリの別のコピー(参照アセンブリフォルダも含む)よりも優先されるため、ビルドを実行するときに参照アセンブリをどこで取得するのが混乱しています。 VS2010が使用する)。したがって、同じIDキーとすべてのアセンブリで技術的に正しいアセンブリであっても、VS2010コンパイラではビルドに使用するライブラリを特定できないため、ビルドを完了することはできません。

0

mmmm場合によっては、たとえば、あなたがPresentationCore.dllを参照する必要がある場合は、viewmodelsのプロジェクトを作成するためのプロジェクトを作成することができます、異なるプロジェクトにクラスを入れます。これは、System.windowsへのアクセスを与えるdllです。コマンドバインディングにICommandを使用することができます

関連する問題