none
Visual Studio 2015 のデザイナで起こるエラーについて RRS feed

  • 質問

  • Windows8.1Pro
    Visual Studio 2015
    .NetFramework4.5
    でWPFアプリケーションを作成しています。

    以前にVisual Studio 2012で作成したソリューションを2015に移行しようと思い、
    2015でコンパイルしてみたのですが、

    「Blend SDK の古いバージョンでビルドされているため、
    Windows Presentation Framework 4 プロジェクトではサポートされません。」

    といったエラーが表示され、デザイナに画面が表示されなくなります。
    ビルド自体は行われ、実行も問題無く行われていますが、
    デザイナに表示されないとレイアウトを確認するのにいちいち実行しなければならず不便です。
    このエラーはどのようにして解決すればよいのでしょうか。

    試しに2015で.NetFramework4.6にして新規プロジェクトを作成してみましたが、
    System.Windows.Interactivityの機能を使うとこのエラーが発生するようです。
    ※テストプログラムでは TriggerAction<>を継承したクラスをXAML上で使用すると起こった。

    インターネットで調べた範囲では、以前のバージョンでも起こっていたようですが、
    解決手段は見つかりませんでした。
    Blend SDKの新しいバージョンが出るのを待つしかないのでしょうか。


    2015年8月7日 4:55

回答

  • 私のところでもずっとこの問題で悩まされていました。

    VisualStudioのインストール順は特に関係ないようです。私の場合は

    System.Windows.Interactivity.dll を GAC に登録することで直りました。

    管理者モードでの実行が必要です。

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\

    gacutil.exe -i "C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries\System.Windows.Interactivity.dll"

    しました。

    • 回答の候補に設定 puni 2016年6月22日 4:28
    • 回答としてマーク fala 2016年10月27日 3:03
    2016年6月3日 4:34

すべての返信

  • 自分のVS2015で試してみましたけど、とくに問題は起きませんでした。

    Blend for VisualStudio2015はインストールされていますか?

    また、問題のプロジェクトの参照で、System.Windows.Interactivity のバージョンはいくつになっていますか?

    2015年8月7日 14:56
  • 私の環境でも再現しました。
    Windows 10 Pro
    Visual Studio Community 2015
    Blend for VisualStudio Community 2015
    .NetFramework4.6

    System.Windows.Interactivity を Ver.4.0.0.0 にした時のエラー
    型 'HogehogeBehavior' のインスタンスを型 'BehaviorCollection' のコレクションに追加することはできません。型 'T' の項目のみが許可されます。
    これは出るときと出ないときがあり、違いはまだ判ってません。

    System.Windows.Interactivity を Ver.4.5.0.0 にした時のエラー
    アセンブリ 'WpfApplicationInteractivityTest' からの型 'HogehogeBehavior' は Blend SDK の古いバージョンでビルドされているため、Windows Presentation Framework 4 プロジェクトではサポートされません。
    これは確実に発生します。

    -- 追記 --

    いずれもXAMLデザイナ上だけで発生し、Ver.4.0.0.0 の時はデザイン画面も正常に描画されます。

    Ver.4.5.0.0 の時はリビルド直後のみデザイン画面が描画されますが、何か操作をするとデザイン画面に無効なマークアップと表示されてしまいます。


    • 編集済み hihijiji 2015年8月8日 3:10
    2015年8月8日 2:55
  • 返信ありがとうございます。
    この問題が起こらない環境もあるのですね。

    Blend for VisualStudio 2015も入っています。
    System.Windows.InteractivityはVer.4.0.0.0とVer.4.5.0.0が入っています。

    また、hihijijiさんが言われていますが、下記エラーも発生します。
    型 'HogehogeBehavior' のインスタンスを型 'BehaviorCollection' のコレクションに追加することはできません。型 'T' の項目のみが許可されます。

    あれから色々試してみましたが、.NetFramework 4.5.2以降だとBlendで
    BehaviorやTriggerActionが使えないらしくタブ上に何も出てきませんでした。
    .NetFramework 4.5.1だと使えますが、エラーは発生します。
    アドマイヤコジーンさんはどのような環境で試されていますか?
    2015年8月10日 1:34
  • 参考までに再現したプログラムを貼っておきます。
    Visual Studio Professional 2015
    .NetFramework 4.5.1
    System.Windows.Interactivity Ver.4.5.0.0

    // Class1.cs
    // -----------------------------------------------------------------
    using System.Windows;
    using System.Windows.Interactivity;
    
    namespace WpfApplication1
    {
        public class AlertAction : TriggerAction<DependencyObject>
        {
            protected override void Invoke(object parameter)
            {
                MessageBox.Show("Hello!");
            }
        }
    }
    // -----------------------------------------------------------------
    

    <!-- MainWindow.xaml -->
    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
            xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
            xmlns:local="clr-namespace:WpfApplication1" Title="MainWindow" Width="525"
            Height="350">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="ContentRendered">
                <local:AlertAction />
            </i:EventTrigger>
        </i:Interaction.Triggers>
        <Grid />
    </Window>
    

    2015年8月10日 1:56
  • コードありがとうございます。

    試してみましたが全くエラーが発生しませんでした。

    Visual Studio 2015 Enterprise というのが唯一の違いです。

    2015年8月10日 2:18
  • 先ほど私もそのエラーが発生しましたが、以下の情報を参考にして、Visual Studio 2015 Enterpriseの再起動により解決いたしました。再起動後は全く正常に動作しており、再度、Visual Studio 2015 Enterpriseを再起動しても問題ありませんでした。
    ありがとうございました。

    (参考)
    http://twilog.org/ugaya40/month-1301


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2015年9月28日 0:34
    2015年9月25日 7:40
    モデレータ
  • 明記しておりませんでしたが、私の環境では Visual Studio を再起動しても復帰しません。
    おそらくスレ主の fala さんも同様だと思います。

    以前の Visual Studio のバージョンでも、
    XAMLデザイナの動作が不調 → Visual Studio の再起動を
    しばしば行っていたので、みなさんも普通に再起動を行っている認識でした。

    XAMLデザイナの潜在的に抱えている問題が、環境によって露見したり引っ込んだりしているんでしょうか?
    2015年10月5日 2:35
  • あれから進展がありましたので書き込みます。

    同じVisualStudio 2015 Proでも、同僚の環境では問題が起こらなかったため、
    環境によるものと断定しVisual Studioを再インストールした所、問題が起こらなくなりました。

    問題が起こっていた時、Visual Studio 2013も一緒にインストールしていたのですが、
    2015 → 2013の順でインストールすると起きるのではないかと推測します。
    さすがに二種類のVisual Studioを何度もインストールして試す時間が無いため推測となりますが、
    問題が発生している方がいらっしゃいましたら検証して頂ければ幸いです。
    2016年2月15日 12:34
  • 当方も、Visual Studio 2010、Visual Studio 2013、Visual Studio 2015 を併用してます。
    しかし当方も問題が発生する環境が無くなってしまいました。
    該当マシンのHDDが壊れ、HDD交換→OSから新規インストールしたところ再現しなくなりました。
    問題が発生した環境では、Visual Studio 2015 のアンインストール→再インストールを行っても再現したので、順番は関係ないかなと考えております。
    新環境での Visual Studio のインストール順は覚えておりません。
    2016年2月16日 2:14
  • こちらのおまじない試して頂けませんか?

    http://tmori3y2.hatenablog.com/entry/2016/02/09/012557

    2016年2月16日 6:44
  • こんにちは。
    もう解決されているかもしれませんが、こちらでも現象がでましたのでご報告します。
    VisualStudioの[ツール]->[オプション]->[XMLデザイナー]で
    「プロジェクトコードをXMLデザイナーで実行する(サポートされている場合)」
    のチェックをOFFに設定して、VisualStudioを再起動すると本現象が発生します。
    チェックをONの状態では発生しません。
    ---------------------------------------------------------
    visualstudio 2015 community(VB) ~SP1
    .Net Freamwork4.6
    • 回答の候補に設定 星 睦美 2016年4月5日 4:54
    2016年2月16日 9:36
  • 私のところでもずっとこの問題で悩まされていました。

    VisualStudioのインストール順は特に関係ないようです。私の場合は

    System.Windows.Interactivity.dll を GAC に登録することで直りました。

    管理者モードでの実行が必要です。

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\

    gacutil.exe -i "C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries\System.Windows.Interactivity.dll"

    しました。

    • 回答の候補に設定 puni 2016年6月22日 4:28
    • 回答としてマーク fala 2016年10月27日 3:03
    2016年6月3日 4:34
  • 久しぶりに再発しました。
    そこで、tmori3y2さんが紹介されているおまじないを試したところ、良く効きました。
    別のドキュメントにも効きました。
    一度発症しなくなると、該当コードを消しても再発はしなくなりました。
    2017年2月10日 3:28
  • 一点、忘れていました。

    VS2013でビルドした中間ファイルやローカルの設定ファイルが残っているプロジェクトをVS2015にアップデートしたときは、このおまじないは効きませんでした。

    実行時は問題ないですが、XAMLエディタで波線が消えません。

    このケースの場合は、中間ファイルなどをすべて消してビルドしなおしたら解決しました。

    2017年2月10日 9:10