0

C# - 別のアセンブリのファイル リソースからイメージを読み込む

SomeProject というプロジェクトに保存され、同じプロジェクトで XAML を使用して何度も表示される PNG 画像ファイルがあります。別のアセンブリで、同じ画像にアクセスしたいと考えています。以前は、実際のファイルへの相対パスを指定するだけで、問題なく動作していました。しかし、リリース インストーラーをビルドすると、イメージ ファイルが SomeProject.DLL にパックされます。

ファイルをローカルで 2 番目のプロジェクトにコピーするだけでなく、別のアセンブリから PNG ファイルにアクセスできる簡単な方法はありますか? 「pack://」を使用して可能かもしれませんが、あまり運がありません。

// SomeOtherProject.SomeClass.cs ...

Image logo = new Image();
BitmapImage logoSource = new BitmapImage();
eChamSource.BeginInit();

// Following line works fine is Visual Studio, but obviously not after installation
// logoSource.UriSource = new Uri(@"..\SomeProject\Resources\Images\logo.png", UriKind.Relative);

logoSource.UriSource = new Uri("pack://application:,,,/SomeProject;component/Resources/Images/logo.png");
logoSource.EndInit();

logo.Width = 100; logo.Height = 100;
logo.Source = logoSource;

どんなアドバイスでもいいです。

4

2 に答える 2

1

次のように、他のアセンブリをロードしてみてください。

Application.LoadComponent(new Uri(@"AnotherAssembly;;;component\AnotherResourceFilePath/logo.png", UriKind.Relative)));

LoadComponent関数はオブジェクトを返します。適切なタイプにキャストするのはあなた次第です。

于 2012-05-01T11:25:05.670 に答える
1

にある画像をそのまま使用する場合は、Contentanother assembly保存する必要がありcopyますmain projects directory

Build イベントを使用してこれを行うことができます。

images -> Properties -> Buil Events ->エディット ポスト ビルドを含むプロジェクトを右クリックして、イメージを にコピーしmain project directoryます。

次に、それを次のように使用する必要があります

pack://application:,,,/ContentFile.xaml

(または)

サブフォルダーに必要な場合

pack://application:,,,/Subfolder/ContentFile.xaml

詳細については、この h をご覧ください http://msdn.microsoft.com/en-us/library/aa970069.aspx

于 2012-05-01T10:13:00.993 に答える