2011-07-16 16 views
3

Project_Aに埋め込まれたリソースとしてのxmlファイルが1つあります。同じソリューション内の別のプロジェクトから別のプロジェクトの組み込みリソースにアクセスできますか?

そしてProject_Aを参照するProject_Bからこの埋め込みリソースにアクセスしたいと思います。

(基本的にProject_Bは、ユニットテストで構成され、私はReSharperのとそれらを実行します。)

は私がProject_Bに取り組んでいたときにProject_Aの埋め込みリソースにアクセスすることが可能ですか?

一般的に、別のプロジェクトのエンベデッドリソースに同じソリューションでアクセスできますか?

答えて

6

はい、できます。

using (Stream stream = typeof(System.Timers.Timer).Assembly. 
          GetManifestResourceStream("System.Timers.Timer.bmp")) 
{ 
    using (Bitmap bitmap = new Bitmap(stream)) 
    { 
     //bitmap.Dump(); 
    } 
} 

...またはリソース名のリストを取得する:ここでは、.NET FrameworkのSystem.dllの内部に埋め込まれたリソースSystem.Timers.Timer.bmpを得ることができますどのように、一例です

string[] names = typeof(System.Timers.Timer).Assembly.GetManifestResourceNames(); 

を.. typeof(System.Timers.Timer)を、埋め込みリソースが入っているアセンブリ内のタイプに置き換えてください。

0

埋め込みリソース用にVisual Studioによって自動的に作成されるクラスは、内部的なものです。

このクラスには、別のアセンブリからアクセスすることはできません。

次のことが可能です。あなたは、Visual Studioを通じて資源にさらに変更を加えた場合、これが立つと確信して(公開しないように

  1. 変更し、このクラス
  2. いくつかの主要な「グローバルからそれを返すことによって、このクラスを公開します。 "あなたのProject_Aのクラス、そして他の"消費 "コードへのアクセスを提供する
+0

VS2010#1では動作しません。新しいリソースを追加すると、リソースクラスがinternalに戻されます。 –

0

"テーブル "ビューで埋め込みリソースを開こうとしましたか(Visual StudioでResources.resxファイルをダブルクリックしましたか)を変更し、最上部の "アクセス修飾子"を変更するトリップ(内部ではなく、 "Strings"、 "Add Resource"、 "Remove Resource"などが配置されている場所)をPublicに変更しますか?

関連する問題