WPF-イメージは「プロジェクトの一部ではないか、ビルドアクションがリソースに設定されていません」
-
11-07-2019 - |
質問
ウィンドウ内に画像を必要とするプロジェクトがあります。これは静的な画像であり、「既存のアイテムを追加」で追加しました。プロジェクトのルートに存在します。
次のようにテストページで画像を参照します-
<Page x:Class="Critter.Pages.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test">
<Image Source="bug.png"/>
</Page>
問題は、見つからない、またはビルドアクションがリソースではないが、存在し、ビルドアクションがリソースであるというメッセージが表示されることです。新しいアプリケーションを作成し、それをウィンドウに投げるだけで正常に動作します。
どんな助けでもいいです。
解決
フルリビルドを実行するか、ビルドファイルを削除してからファイルをビルドします。
Visual Studioは常にリソースへの変更を取得するとは限らず、再コンパイルするのが面倒な場合があります。
完全なURIを使用してみてください。同じ問題が発生したときに役立ちました。次のようなもの
pack://application:,,,/MyAssembly;component/bug.png
他のヒント
→画像ファイルを右クリック →プロパティをクリック →リソースへのビルドアクションの選択 →クリーンアンドビルドソリューション →ソリューションの実行
すべてを取得します。
同じ問題がありました。ソリューションのクリーニングと再構築では修正されなかったため、Visual Studioを再起動しました。 Visual 2010がこの問題を解決し、Visual 2008でwpfを脅かす他の多くの問題を修正することを期待しています。
&quot; /&quot;を使用して画像へのパスを開始してみてください:
<Image Source="/bug.png"/>
質問に対する解決策があります
<Image Source="/WpfApplication4;component/images/sky.jpg" />
&quot;コンポーネント&quot;フォルダではありません!
そうではないか、少なくとも現在のベータはそうではありません。私はまったく同じ問題を調べているときにこのページを見つけました。再構築/クリーニングは何もしませんでした。ソリューションを閉じてリロードした後、ファイルは魔法のように再び互換性を持つようになりました。
非同期ロードの例、別のオプション。例のclip.mp4は、Webプロジェクトのルートにあります。
void Landing_Loaded(object sender, RoutedEventArgs e)
{
//Load video async
Uri pageUri = HtmlPage.Document.DocumentUri;
Uri videoUri = new UriBuilder(pageUri.Scheme, pageUri.Host, pageUri.Port, "clip.mp4").Uri;
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
webClient.OpenReadAsync(videoUri);
}
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
byte[] VideoBuffer = new byte[e.Result.Length];
e.Result.Read(VideoBuffer, 0, (int)e.Result.Length);
MemoryStream videoStream = new MemoryStream(VideoBuffer);
ContentVideo.SetSource(videoStream);
ContentVideo.Stop();
ContentVideo.Play();
}
まったく同じ問題に直面しましたが、VS2008の再起動またはプロジェクトのクリーニングと再構築は機能しませんでした。最後に、以下の手順でうまくいきました。
- Windowsエクスプローラーで、イメージをプロジェクトリソースフォルダーにコピーします。例:MyProject \ Resources \
- Visual Studio内で[リソース]を右クリックし、[追加]&gt;を選択します。既存のアイテム&quot;コピーした画像を選択します
- フォームXAMLから画像ソースを次のように設定します:
&quot; Source =&quot; Resources / MyImage.ico&quot;
(私の画像はアイコン(.ico)ファイルとして保存されましたが、このアプローチはあらゆる画像タイプに対応
これが誰かに役立つことを願って
同様の問題がありました。ソリューションエクスプローラーから実際には使用していなかった someStyle.xaml
ファイルを削除した後。
その後、ファイルを復元しましたが、変更はありませんでした。プロジェクトのクリーニングと再構築は役に立ちませんでした。
対応する行を単に削除する:
<ResourceDictionary Source="someStyle.xaml"/>
トリックをしました。
同じエラーメッセージが表示されましたが、問題は単純なNOOBミスでした。
.icoファイルを&quot; My Project / Resources&quot;に追加すると、VSはResourcesという名前のサブフォルダーを作成し、使用しようとしました;
<Window Icon="icons1.ico">
使用すべきだったとき;
<Window Icon="Resources/icons1.ico">
...判断しないで、1週間前にWPFを使い始めました:)