none
XAMLでのリンクの扱いについて RRS feed

  • 質問

  • 「リンクで追加」でプロジェクトに含めたリソースファイルは
    相対パスを含めた指定でリソースディクショナリーに記載した場合、
    プレビューでは表示できますが、実行時にエラーが発生します。

    環境:VisualStdio2008

    Src +- Common(共通のリソース) + Language.xaml(本体)
        |
        +- HOGE +- Risource + Language.xaml(リンクで追加)
                |
                +- app.xaml
                +- Window.xaml
                +- Window.xaml.cs


    具体的には上記の共通リソースディレクトリ内にあるLanguage.xamlを
    HOGEプロジェクトのResourceディレクトリ内に「リンクで追加」した状態です。
    app.xamlにリソースディクショナリーを記載しており下記がそのものです。

    Code Snippet

    <Application x:Class="HOGE.App"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        StartupUri="Window.xaml">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resource\Language.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>



    エラー内容は以下様

    'Resource/Language.xaml' 値をオブジェクト 'System.Windows.ResourceDictionary' の
    プロパティ 'Source' に割り当てることはできません。
    リソース 'resource/language.xaml' を検索できません。 
    マークアップ ファイル 'HOGE;component/app.xaml' 行 8 位置 37 のオブジェクト
    'System.Windows.ResourceDictionary' にエラーがあります。

    リンクで追加した場合は相対パスを含まず、リンク名だけを指定すれば正常に実行できるようになりましたが、
    「読み込みで問題が発生しました」と表示され、今度はプレビューで表示できなくなってしまいました。
    以下リンク名だけのもの

    Code Snippet

    <Application x:Class="HOGE.App"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        StartupUri="Window.xaml">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Language.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>



    リンクで追加したファイル(Language.xaml)とapp.xamlの配置を同じ階層にすれば
    デザインのプレビュー・実行ともに問題なく想定した動きになるのですが
    なんとかこの階層のままプレビュー・実行できるようにはならないでしょうか?
    そもそもこういう仕様なのでしょうか?

    (爾Д爾)(爾Д爾)(爾Д爾)

    2008年6月5日 13:07

回答

  • こんにちは! 中川俊輔です。
     
    こちらで試したところ、コンパイル時にResourceディレクトリに作成されるはずのLanguage.bamlが
    ルートディレクトリに作成されるのを確認しました。
    これによってリンクできずにエラーが起こるようですね。
     
    不具合の可能性があるので、connectサイトにてフィードバックをしていただけますでしょうか?
    大変お手数ですが、直接フィードバックしていただいたほうが早いレスポンスが期待できます。

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。

    コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年6月12日 10:45

すべての返信

  • こんにちは! 中川俊輔です。
     
    こちらで試したところ、コンパイル時にResourceディレクトリに作成されるはずのLanguage.bamlが
    ルートディレクトリに作成されるのを確認しました。
    これによってリンクできずにエラーが起こるようですね。
     
    不具合の可能性があるので、connectサイトにてフィードバックをしていただけますでしょうか?
    大変お手数ですが、直接フィードバックしていただいたほうが早いレスポンスが期待できます。

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。

    コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年6月12日 10:45
  • ご返答ありがとうございます。

    ほとほと諦めかけており、別の手段をとっておりました。
    ひとまずConnectサイトにてフィードバックさせて頂きました。
    このような経験は初めてなので段取りがちゃんと出来てるか心配です。(^^;

    ちなみに別の手段というのが「共通のリソース」を別プロジェクトとして分離し、
    そのプロジェクトを参照することで、この問題を回避しています。
    2008年6月13日 8:32
  • 探し方が悪いのか,フィードバックが見つからないんですが(汗)


    # 誰かが Validateした方が目に付きやすいので。
    2008年6月18日 7:53
  • すみません。
    確認したところプライベートな記事になっていました。
    公開にしましたので見れるかと思います。

    https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=350859
    2008年6月18日 8:18
  • 最初は仕様かと思ったけど,

    Add した時は,サブフォルダに bamlファイルができて,

    Add As Link した時は,アプリケーション・ルートにできるのは

    確かに変ですね。ポチッとしときました。

    2008年6月18日 9:18