2

現在の WPF プロジェクトの 1 つに問題があります。プロジェクトは正常にコンパイル (および実行) されていました。その後、ライセンス上の懸念から、Extended WPF Toolkit をライブラリから削除することにしました。私はNumericUpDowns ( ShortUpDown, ... 非推奨のものではない) を使用していたので、自分で書くことにしました。

私はこれを書き、UserControlこれに非常に満足していますが、UpDowns を私が呼び出したコントロールと交換するとすぐに、動作しMySpinnerなくなりました:

  • デザイナーにウィンドウが表示されず、次のエラー メッセージが表示されます。「一部のカスタム要素がまだ構築されていないため、デザイン ビューを正しく表示できません。」.

  • 私のプロジェクト、使用されたすべてのクラスが名前空間に配置されていないことを示す多くのエラー メッセージ ( を除くすべてのクラスMySpinner) または (コード ビハインドからのエラー)を示す多くのエラー メッセージでビルドされなくなりMySpinnerました。おそらく、XAML がコンパイルされていないことが原因です。

DeviceSimulator私のプロジェクトのすべては、行のように「インポート」した名前空間にありますcon: xmlns:con="clr-namespace:DeviceSimulator"in the start of my Window(以前は完全に機能していました)。

<con:IntelliSenseと入力すると、名前空間内のすべてのクラスが補完候補として正しく表示されます。

一見似たようなトピックですでに多くの質問があることは知っていますが、私の場合、プロジェクトがビルドされないという違いがあります。エラーにもかかわらずプロジェクトがビルドされるという問題は、私が数回遭遇したものですが、ここでは当てはまりません。

再起動、再構築、クリーニング、コンパイルターゲットの変更など、他の質問で提案された解決策を試しましたAny CPUx86、何も機能しませんでした (ソリューションがコンパイルされないため、構築と再構築は機能しません)。私が使用しているものはすべてプロジェクト フォルダーにローカルに存在します (もちろん のデフォルトの名前空間定義を除くschemas.microsoft.com...)。追加のライブラリなどは含まれておらず、ネットワークやサーバーで作業していません。

この問題は、Express バージョンを使用している Visual Studio 2013 と 2012 で発生します。

4

5 に答える 5

1

XAML デザイナーで XAML コードを表示するには、ページが適切にマークアップされている必要があります。コンパイルされないコード ビハインドはコメント アウトして、プロジェクトをビルドできるようにする必要があります。

「BaseView」というクラスと XAML ページを古いプロジェクトから新しいプロジェクトに移行しようとしたときに、プロジェクトで同様の問題が発生しました。プロジェクトには異なる名前空間がありました。移動していた XAML ページはBaseView、 ではなく、コード ビハインドでクラスを継承していましたPage

  1. ソリューション エクスプローラー内で「既存のプロジェクトを追加」を実行し、クラスとページ (コード ビハインド ファイルを持ってきた) を古いプロジェクトから新しいプロジェクトにすべてドラッグ アンド ドロップでコピーしました。 Visual Studio の新しいプロジェクトのソリューション エクスプローラー。(注:後で、古いプロジェクトからコードを含むフォルダーを新しいプロジェクトにドラッグするのではなく、新しいプロジェクトに新しいフォルダーを作成し、古いコードのコピーを作成して新しいフォルダーに貼り付ける必要があることがわかりました) (詳細この時点に到達した方法について: https://msdn.microsoft.com/en-us/library/879x19d1(v=vs.90).aspx )
  2. クラス ファイルと XAML ページのコード ビハインドusingで古い名前空間を参照していた名前空間とステートメントを更新しました。BaseView
  3. クラス ファイルから継承していた XAML ページ ディレクティブの名前空間 <v:BaseView x:Class="OurNamespace.View.PageClassName" ...vmlns:v="clr-namespace:OurNamespace.View"....

「ソリューションのビルド」の後でも、恐ろしい「カスタム要素がまだビルドされていないため、デザイン ビューを正しく表示できません」というエラーが表示されることがわかりました。名前空間が正しく更新されていても、 に存在しない<v:BaseViewXAML マークアップにカーソルを合わせると、エラーが発生していました。BaseViewOurNamespaceBaseView

エラーを解決するには、クラス ファイルをルート (XAML ページが存在するフォルダーの外) に移動し、"ソリューションのビルド" を実行してからフォルダーに戻し、別の "ソリューションのビルド" を実行してから、XAML デザイナーの下部、水平スクロールバーのすぐ左にある「プロジェクト コードを有効にする」というボタンで、最終的にクラスを認識するようになり、最終的に XAML デザイナーが動き出しました。その 2 番目のビルドで、どれが解決したかはわかりません。

後で、別のワークステーションからプロジェクトを起動しても問題が発生し、XAML ページを開こうとすると [出力] タブに次のエラーが表示されることがわかりました。

C:\Users\<User>\AppData\Local\Microsoft\VisualStudio\12.0\Designer\ShadowCache\4olitigs.k2m\hj4ewy5v.g23\MyApplication.dll

Could not load file or assembly 'MyApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. This assembly was compiled for a different processor.

元のワークステーションでは問題ありませんでしたが、2 番目のワークステーションでは失敗しました。プロジェクト プロパティの [ビルド] タブにあるプラットフォーム ターゲットであることが判明しました。マシン間の違いを避けるために、少なくともこのケースでは「Any CPU」に設定する必要があります。

于 2016-08-09T19:49:02.283 に答える