web-dev-qa-db-ja.com

Visual Studio 2012XAMLデザイナーの無効なマークアップ

ユーザーコントロールを含むプロジェクトがあります。何らかの理由で、上記のコントロールを使用するウィンドウのデザインビューが機能を停止し、「無効なマークアップ」を要求します。表示されるエラーは、ユーザーコントロールの一部のメンバーが認識されないかアクセスできないことです。ただし、プロジェクトは正常にコンパイルおよび実行されます。 VS2010にロードすると、エディターは正常に動作し、エラーはまったく発生しません。ExpressionBlendでも同じです。

これまでのところ、一般的なクリーン、再構築、objからの手動削除、.xamlの更新と再構築を試し、/ resetuserdataと/ resetsettingsを使用してVS2012を起動しようとしましたが、問題は解決しません。私は自分のプロジェクトのはるかに古いリビジョンにロールバックしました。デザイナーが問題なく動作していたとき、サイコロはありませんでした。同じエラーです。また、VS2012を新しいWindowsユーザーとして起動して、保存されているappdataが長引くのを回避しようとしましたが、これも失敗です。

他の種類のキャッシュまたは手動で削除できるものはありますか?

21
moreyummystuff

ShadowCache(レンダリングデザイナーに使用)がVS2012でXAMLと同期しなくなるという問題もあります。派生ユーザーコントロールで次のエラーが発生して恐ろしい時間を過ごしていたので、これを見つけました。

ローカルプロパティXXXXは、YYYYYから派生したタイプにのみ適用できます。

シャドウキャッシュは、ユーザープロファイルディレクトリにあります。

app data\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache

そこにあるすべてを削除して、VS2012を再起動できます。その後、物事ははるかにうまくいきました(少なくともしばらくの間!)

20
dansan

ShadowCacheのすべてを削除します

C:\ Users\username\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache \

コピーして貼り付けることができるパス

これらのパスの1つをコピーしてWindowsエクスプローラーに貼り付けるだけです。 %LOCALAPPDATA%Windows環境変数Explorerに入力すると、対応する値に置き換えられます(コマンドでも機能します)促す

VS2012

%LOCALAPPDATA%\ Microsoft\VisualStudio\11.0\Designer\ShadowCache \

VS2013

%LOCALAPPDATA%\ Microsoft\VisualStudio\12.0\Designer\ShadowCache \

VS2015

%LOCALAPPDATA%\ Microsoft\VisualStudio\14.0\Designer\ShadowCache \

ASP.NET

ASP.NETを開発する場合は、

%LOCALAPPDATA%\ Microsoft\WebsiteCache

%LOCALAPPDATA%\ Temp\VWDWebCache

10
pr0gg3r

これですべてのケースが修正されるかどうかはわかりませんが、これが私にとってはうまくいきました(今はずっと)。

IDEでBlendデザイナを使用してx64アプリケーションを構築しているVS2012を使用していますが、新しいICommandを定義してCommand属性を追加すると、デザイナがx64エラーでサポートされなくなります(正確な警告を忘れています)。 x86に切り替えると、x64で何度再構築しても、ICommandが認識されなかったか、アクセスできなかったという無効なXAMLマークアップエラーが発生します。 x86に切り替えてビルドしてから、x64に切り替えてください。デザイナーの問題ではありません。

VS2008とBlendバージョン3および4で同様の問題が発生したことを思い出します。他の投稿で読んだことから、AnyCPUを使用しても問題が解決する可能性があります。

4
Gooey Developer

カスタム(パラメーターなし)コンストラクターでコントロールを使用しているときにも同じ問題が発生します。

カスタム/ユーザーコントロールコンストラクターが、WPFデザイナーが持っていないデータを必要としないかどうかを確認します。キャッチ、クリーニング、再構築を試して全体を取り囲んでいることを確認してから、問題が解決策であるかどうかを確認するために少し待ちます。

そうでない場合は、デフォルトのWPF Init codを除くすべてにコメントを付けて、クリーンアップ、再構築、およびテストしてみてください。

1
H Rangel

サポートされていないユーザーコントロールを追加したか、ユーザーコントロールに間違った親子関係を追加した可能性があります。疑わしいユーザーコントロールを削除して、プロジェクトを再構築してみてください。問題を修正する必要があります。乾杯

1
SinhaOjas

少し遅れますが、他に考慮すべき点があります。パラメーターなしのコンストラクターが、デザイナーにいるために存在しないデータを取得するなど、他の作業を行っている場合は、コンストラクターの先頭にこれを追加します。

if (DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) return;
// Do work.

これが必要なのは、デザイナがパラメータなしのコンストラクタを実行するため、デザインモードで失敗し、無効なマークアップが発生する可能性があるためです。

そして、他の人が言っていることに関係なく、これはVSまたはWPFXAMLパーサーのバグではありません。今日、VS 2015、.Net4.5.2を使用してこの問題に遭遇しました。

1
Bob

Visual Studio 2013では、これはWindows Phoneプロジェクトで使用している回避策です http://danielhindrikes.se/visual-studio/workaround-for-invalid-markup-problems-when-developing-for-windows-電話/ 。 WPF用のXAMLを作成するときに使用するのと同じデザイナーだと思います。

シャドウキャッシュを削除しようとしましたが、Visual Studioを初めて起動したときに機能します。上記の回避策だけが、私を助けてくれました。

1
Daniel

Xamlを再エンコードし、バグのあるファイルをideで開く->名前を付けて保存->エンコードを保存する(UTF8を選択)必要があります

0
Enhakiel

同じ問題が発生しました(プログラムのコンパイルと実行が正常で、XAMLデザイナーが無効なマークアップを報告します)。問題は、ソリューション内のプロジェクトの1つのアセンブリ名を誤って変更し、それを元に戻し、XAMLデザイナーが元に戻ったことです。ソリューション内の各プロジェクトの[プロパティ]ページを確認し、アセンブリ名が期待どおりであることを確認してください。

0
JMK

VS 2015と2017でも同じ問題が発生しますが、x64用にコンパイルした場合のみです。ここでは、コンパイルターゲット(プロジェクトのプロパティ-ビルド、ドイツ語ではPlattformzielと呼ばれます)を一時的にx86に変更し、プロジェクトにコンパイルしてx64に戻すと役立ちます。

多分これは他の誰にとっても「解決策」です。

0

プロジェクトに問題はないと思いますが、VS 2012に問題があります。VS2012の最新アップデート(アップデート2)をインストールしてみてください。また、これを確認してください answer

よろしく、

0
Miro Malek