ユーザーコントロールを含むプロジェクトがあります。何らかの理由で、上記のコントロールを使用するウィンドウのデザインビューが機能を停止し、「無効なマークアップ」を要求します。表示されるエラーは、ユーザーコントロールの一部のメンバーが認識されないかアクセスできないことです。ただし、プロジェクトは正常にコンパイルおよび実行されます。 VS2010にロードすると、エディターは正常に動作し、エラーはまったく発生しません。ExpressionBlendでも同じです。
これまでのところ、一般的なクリーン、再構築、objからの手動削除、.xamlの更新と再構築を試し、/ resetuserdataと/ resetsettingsを使用してVS2012を起動しようとしましたが、問題は解決しません。私は自分のプロジェクトのはるかに古いリビジョンにロールバックしました。デザイナーが問題なく動作していたとき、サイコロはありませんでした。同じエラーです。また、VS2012を新しいWindowsユーザーとして起動して、保存されているappdataが長引くのを回避しようとしましたが、これも失敗です。
他の種類のキャッシュまたは手動で削除できるものはありますか?
ShadowCache(レンダリングデザイナーに使用)がVS2012でXAMLと同期しなくなるという問題もあります。派生ユーザーコントロールで次のエラーが発生して恐ろしい時間を過ごしていたので、これを見つけました。
ローカルプロパティXXXXは、YYYYYから派生したタイプにのみ適用できます。
シャドウキャッシュは、ユーザープロファイルディレクトリにあります。
app data\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache
そこにあるすべてを削除して、VS2012を再起動できます。その後、物事ははるかにうまくいきました(少なくともしばらくの間!)
ShadowCacheのすべてを削除します
C:\ Users\username\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache \
これらのパスの1つをコピーしてWindowsエクスプローラーに貼り付けるだけです。 %LOCALAPPDATA%
は Windows環境変数Explorerに入力すると、対応する値に置き換えられます(コマンドでも機能します)促す)
%LOCALAPPDATA%\ Microsoft\VisualStudio\11.0\Designer\ShadowCache \
%LOCALAPPDATA%\ Microsoft\VisualStudio\12.0\Designer\ShadowCache \
%LOCALAPPDATA%\ Microsoft\VisualStudio\14.0\Designer\ShadowCache \
ASP.NETを開発する場合は、
%LOCALAPPDATA%\ Microsoft\WebsiteCache
%LOCALAPPDATA%\ Temp\VWDWebCache
これですべてのケースが修正されるかどうかはわかりませんが、これが私にとってはうまくいきました(今はずっと)。
IDEでBlendデザイナを使用してx64アプリケーションを構築しているVS2012を使用していますが、新しいICommandを定義してCommand属性を追加すると、デザイナがx64エラーでサポートされなくなります(正確な警告を忘れています)。 x86に切り替えると、x64で何度再構築しても、ICommandが認識されなかったか、アクセスできなかったという無効なXAMLマークアップエラーが発生します。 x86に切り替えてビルドしてから、x64に切り替えてください。デザイナーの問題ではありません。
VS2008とBlendバージョン3および4で同様の問題が発生したことを思い出します。他の投稿で読んだことから、AnyCPUを使用しても問題が解決する可能性があります。
カスタム(パラメーターなし)コンストラクターでコントロールを使用しているときにも同じ問題が発生します。
カスタム/ユーザーコントロールコンストラクターが、WPFデザイナーが持っていないデータを必要としないかどうかを確認します。キャッチ、クリーニング、再構築を試して全体を取り囲んでいることを確認してから、問題が解決策であるかどうかを確認するために少し待ちます。
そうでない場合は、デフォルトのWPF Init codを除くすべてにコメントを付けて、クリーンアップ、再構築、およびテストしてみてください。
サポートされていないユーザーコントロールを追加したか、ユーザーコントロールに間違った親子関係を追加した可能性があります。疑わしいユーザーコントロールを削除して、プロジェクトを再構築してみてください。問題を修正する必要があります。乾杯
少し遅れますが、他に考慮すべき点があります。パラメーターなしのコンストラクターが、デザイナーにいるために存在しないデータを取得するなど、他の作業を行っている場合は、コンストラクターの先頭にこれを追加します。
if (DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) return;
// Do work.
これが必要なのは、デザイナがパラメータなしのコンストラクタを実行するため、デザインモードで失敗し、無効なマークアップが発生する可能性があるためです。
そして、他の人が言っていることに関係なく、これはVSまたはWPFXAMLパーサーのバグではありません。今日、VS 2015、.Net4.5.2を使用してこの問題に遭遇しました。
Visual Studio 2013では、これはWindows Phoneプロジェクトで使用している回避策です http://danielhindrikes.se/visual-studio/workaround-for-invalid-markup-problems-when-developing-for-windows-電話/ 。 WPF用のXAMLを作成するときに使用するのと同じデザイナーだと思います。
シャドウキャッシュを削除しようとしましたが、Visual Studioを初めて起動したときに機能します。上記の回避策だけが、私を助けてくれました。
Xamlを再エンコードし、バグのあるファイルをideで開く->名前を付けて保存->エンコードを保存する(UTF8を選択)必要があります
同じ問題が発生しました(プログラムのコンパイルと実行が正常で、XAMLデザイナーが無効なマークアップを報告します)。問題は、ソリューション内のプロジェクトの1つのアセンブリ名を誤って変更し、それを元に戻し、XAMLデザイナーが元に戻ったことです。ソリューション内の各プロジェクトの[プロパティ]ページを確認し、アセンブリ名が期待どおりであることを確認してください。
VS 2015と2017でも同じ問題が発生しますが、x64用にコンパイルした場合のみです。ここでは、コンパイルターゲット(プロジェクトのプロパティ-ビルド、ドイツ語ではPlattformzielと呼ばれます)を一時的にx86に変更し、プロジェクトにコンパイルしてx64に戻すと役立ちます。
多分これは他の誰にとっても「解決策」です。
プロジェクトに問題はないと思いますが、VS 2012に問題があります。VS2012の最新アップデート(アップデート2)をインストールしてみてください。また、これを確認してください answer 。
よろしく、