10

バグかどうかは正確にはわかりませんが、実行時にIOExceptionエラーが発生し、リソースが見つかりませんというエラーが表示されます。

キャンバスのバックグラウンドでアプリ(c#、WPF)にいくつかの画像を読み込んでいますが、データベースの状態によって異なります。問題は、LAST(アルファベット順)ファイルを読み込めないことです。たとえば、フォルダに15枚の画像があります。最初に14を問題なくロードできます。しかし、最後のものは常に例外をスローします。

私は100%確信しています。フォルダに画像があります(以下の!image-printscreenを参照)。そして、私がどのように書いたか。14最初に問題なくロードできますが、最後の1つだけが例外をスローします。

それはWPF-c#のバグですか、それとも何か間違ったことをしていますか?

例外をスローしているものをコーディングします。

canvas_status.Background = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), @"Images\" + statusName + ".png")));

canvas_name.Background = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), @"Images\" + statusName + bulheadName + ".png")));

エラー:

IOException was unhalded
Cannot locate resource 'view/images/panel_uzavreno_d.png'.

画像(高解像度の場合は、画像の右マウスボタンをクリックして[画像の表示]などをクリックします):

printscreen

4

2 に答える 2

37

私は同様の問題を抱えていました.IOExceptionは、アセンブリに実際に存在するpngリソースを見つけることができません。

呼び出し元がリソースと同じアセンブリにあったとしても、アセンブリ名を明示的に指定することで解決策を見つけました。

Pack URI 構文を使用すると、次のようになります。

pack://application:,,,/MyAssemblyName;component/MyResourcesFolder/MyImage.png

(Pack URI の詳細については、http://msdn.microsoft.com/en-us/library/aa970069.aspxを参照してください)

編集:アセンブリ名を指定した後にしなければならなかったもう 1 つのことは、プロジェクトをクリーンアップすることでした。ビルド後に問題が再発しましたが、中間製品のクリーニング後に解決されました。これは間違いなく Visual Studio のバグです。

于 2012-10-28T19:30:08.227 に答える
23

イメージのビルド アクションを「リソース」タイプに設定する必要があります。

ファイルを右クリック>>プロパティ>>「ビルドアクション」を「リソース」に設定

于 2014-08-11T09:19:39.850 に答える