148

VB.NET WPF アプリケーションで動作する VS2012 を使用します。WPF を学習するために使用している簡単な MusicPlayer チュートリアル アプリがあります。チュートリアルの C# バージョンを VB.NET に段階的に変換しています。

アプリには、同じ名前空間にある 2 つのクラスがあります。XAML で名前空間を参照できますが、XAML でクラス オブジェクトを参照しようとするとエラーが発生し、コンパイルできません。

奇妙なことに、IntelliSense は xmlns:c= タグを介して名前空間を参照する場合と、 を使用してクラス オブジェクトを入力する場合の両方で正常に動作します <c: が、オブジェクトに下線が引かれ、デザイナーでビルドまたは作業しようとするとエラーが生成されます。

.vb クラス ファイルは、\Controls というフォルダーにあります。メイン プロジェクトのルート名前空間は、意図的に空白のままにしています。クラスは次のようにコーディングされています...

Namespace MusicPlayer.Controls
    Public Class UpdatingMediaElement
       .... code here
    End Public
End Namespace

xamlは次のようになります

<Window >(タグで定義された名前空間

xmlns:c="clr-namespace:MusicPlayer.Controls"

( で定義されたオブジェクト<Grid>)

  <c:UpdatingMediaElement Name="MyMediaElement" />

(エラー表示) 名前空間「clr-namespace:MusicPlayer.Controls」に名前「UpdatingMediaElement」が存在しません。

何が問題なのか、それを修正する方法がわからないのですか?

4

40 に答える 40

32

Xaml Design の Shadow Cache をクリアすると、この問題が解決することがわかりました。Visual Studio 2015 Update 1 で問題が発生しました。

Visual Studio 2015 では、キャッシュは次の場所にあります。

%localappdata%\Microsoft\VisualStudio\14.0\Designer\ShadowCache

プロセス:

  1. ソリューション エクスプローラーでソリューションを右クリックし、[クリーン ソリューション] を選択します。
  2. Visual Studio をシャットダウンする
  3. ShadowCache フォルダーを削除します。
  4. Visual Studio プロジェクトを再開しました
  5. ソリューションを再構築する

名前空間エラーはもうありません。

于 2016-03-03T18:44:54.017 に答える
24

ビルド ターゲット プラットフォームを x86 に変更して、プロジェクトをビルドしてみてください。

Subversion を介して、プロジェクトのビルド プラットフォーム ターゲットを x64 に変更したようです。これが私が行った唯一の変更でした。その変更を行った後、経験したのと同じエラーを表示し始める前に、コードはしばらくの間機能していました。テストのためにプラットフォーム ターゲットを x86 に変更したところ、突然デザイナーが再び作業を開始しました。その後、x64に戻しましたが、問題は完全に解消されました。デザイナーが x32 で何らかのキャッシュ コードをビルドし、x64 ビルド プラットフォームを変更すると、コードを変更するとコードが壊れてしまうのではないかと思います。

于 2014-12-26T22:00:44.477 に答える
8

イエス...これは5年後のVisual Studio 2017でもまだ問題です。

再構築、クリーニングと再構築、x86/x64 出力の切り替え、Windows の再起動、ShadowCache フォルダーのクリーニング、XML 名前空間宣言への「;assembly={my main assembly name}」の追加を試みましたが、何も機能しませんでした! したことは次のとおりです。

コマンドの静的クラス (私の場合は、デザインが私の WPF コマンドを検出するようにすることでした) を別のアセンブリに入れ、代わりにアセンブリ名をそのアセンブリ名に変更します。

于 2017-12-15T09:36:09.387 に答える
3

最近、.NET 4.6.2 の WPF プロジェクトに VS 2015 Update 3 を使用してこの問題が発生しました。私のプロジェクトのコピーはネットワークフォルダーにあり、ローカルに移動して問題を解決しました。

VS 2015 はネットワーク パスを好まないように見えるため、これにより他の種類の問題が解決される可能性があります。彼らにとって大きな問題であるもう 1 つの問題は、プロジェクトがネットワーク パスにある場合に git リポジトリを同期することです。これもローカルに移動することで解決されます。

于 2016-09-28T10:37:40.737 に答える
2

Visual Studios 2013、Service Pack 4 でも同じ問題が発生します。Visual Studios 2015 Preview でも試してみましたが、同じ結果が得られました。

これは、Visual Studio チームが修正していない WPF ビジュアライザーの単なる制限です。その証拠に、x86 モードでビルドするとビジュアライザーが有効になり、x64 モードでビルドすると無効になります。

奇妙なことに、Intellisense は Visual Studios 2013、Service Pack 4 で十分に機能します。

于 2015-01-15T23:24:46.883 に答える
2

私は同じ問題を抱えていましたが、私の場合、マークアップ デザイン ビューでソリューションを再構築するように求められ、次のメッセージでフォーム レイアウトが表示されませんでした: Design view is unavailable for x64 and ARM target platformsまたはBuild the Project to update Design view.

ソリューションを再構築しても解決されません (デザイン ビューも「名前が名前空間に存在しません」というエラーもありません)。

Solution -> Properties > Configuration Properties で設定をいじったためだと思います

私は最終的に2つの仕事で問題を解決しました:

  1. ページのビルド列のすべてのチェック ボックスをオンにする: ソリューション -> プロパティ -> 構成プロパティ
  2. ソリューション構成をデバッグからリリースに、またはその逆に変更します。

Visual Studio2012 Update 2 のバグだと思います。

于 2013-06-02T13:55:20.167 に答える
2

私はすべての答えを調べましたが、誰も助けてくれませんでした。最後に自分で解決できたので、他の人に役立つかもしれないので答えを提示します。

私の場合、ソリューションには 2 つのプロジェクトがありました。1 つはモデルを含み (たとえば、プロジェクトとアセンブリ名はModels )、もう 1 つはビューとビュー モデルを含みます (私たちの規則に従って、プロジェクト、アセンブリ名、およびデフォルトの名前空間はModels.Monitor でした) 。 . Models.Monitor はモデル プロジェクトを参照しました。

Models.Monitor プロジェクトでは、xaml の 1 つに次の名前空間を含めました: xmlns:monitor="clr-namespace:Models.Monitor"

MsBuildと Visual Studio が、アセンブリ 'Models' で 'Monitor' タイプを見つけようとしていたため、エラーが発生したと思われます。解決するために、私は次のことを試しました:

  1. xmlns:monitor="clr-namespace:Models.Monitor;assembly=" - 名前空間がhttps://msdn.microsoft.com/en-us/library/ms747086(v=vs .110).aspx
  2. 明示的な名前空間宣言も試みました: xmlns:monitor="clr-namespace:Models.Monitor;assembly=Models.Monitor"

上記のどちらも機能しませんでした。

最後にあきらめ、回避策として、使用しようとしていた UserControl を別の名前空間 'ModelsMonitor' に移動しました。その後、問題なくコンパイルできました。

于 2017-06-02T19:07:45.883 に答える
1

アセンブリ参照を確認してみてください。プロジェクト参照に黄色の感嘆符が付いている場合は、そこに問題があり、あらゆる種類のエラーが発生します。

プロジェクト参照が正しいことがわかっている場合は、ターゲット フレームワークを確認してください。たとえば、4.5 フレームワークを使用するプロジェクトで 4.5.2 フレームワークを使用するプロジェクトを参照することは、適切な組み合わせではありません。

于 2016-07-22T07:44:42.120 に答える
1

この問題は、さまざまな「トリック」によって解決できるようです。

私の場合、ソリューション内で取り組んでいたプロジェクトだけでなく、ソリューション全体をビルド/再ビルド/クリーニングしていました。[Build [my project]] をクリックすると、エラー メッセージが表示されなくなりました。

于 2016-07-25T23:40:41.093 に答える
0

ソリューション プロパティ ページで、"UpdatingMediaElement" を含むアセンブリのプラットフォームと、"UpdatingMediaElement" がサブクラス化または実装するスーパークラスおよびインターフェイスのいずれかを含むアセンブリを確認します。これらすべてのアセンブリのプラットフォームは「AnyCPU」でなければならないようです。

于 2014-09-14T21:56:26.337 に答える
0

残念ながら、これらのヒントはどれも役に立ちませんでした。最終的に問題を解決することができました。Visual Studio はネットワーク ドライブではうまく動作しないようです。プロジェクトを共有ドライブからローカルに移動して再コンパイルすることで、この問題を解決しました。もうエラーはありません。

于 2016-07-28T18:46:48.470 に答える
0

このスレッドの 2 つのアイデアの組み合わせがうまくいったので、今後 5 年間、この問題が続く誰かに役立つことを期待して、私が行ったことを投稿します。私はVS2017コミュニティを使用しています)

  1. dllへの参照を削除
  2. クリーン、リビルド、ビルド
  3. VS を閉じる、dll のブロックを解除する(以下の注を参照)、シャドウ キャッシュを削除する
  4. VS を開く、クリーンアップする、リビルドする、ビルドする
  5. dll への参照を復元する
  6. クリーン、リビルド、ビルド

手順 2、4、および 6 の順序が正確ではない可能性がありますが、この問題に 2 時間近く費やした後、ストローをつかんでいました。私にとっての鍵は、参照の削除、dll のブロック解除、シャドウ キャッシュの削除の組み合わせだったと思います。

(手順 3 の注 - 私が使用している dll は私の同僚/指導者によって書かれたものなので、安全であることはわかっています。DLL のソースがわからない場合は、この手順に注意してください)

MS はこの問題を解決する気はないようなので、後世のためにこのスレッドをブックマークしておきます。WPF を独学で習得するのは非常に困難であり、すべてを正しく行った後にこのようなものをハックしなければならないのは腹立たしいことです。

于 2019-08-23T18:10:55.427 に答える
0

別の人が投稿したように、これはプロジェクトをネットワーク共有に保存することによって引き起こされる可能性があります。ネットワーク パスの使用からマップされたネットワーク ドライブに切り替えると、すべてが正常に機能することがわかりました。

from: "\\SERVER\Programming\SolutionFolder"

to: "Z:\Programming\SolutionFolder" (正確なマッピングはオプション)

于 2019-12-14T11:17:41.770 に答える
0

VB.NET は、C# のようにフォルダー構造に基づいて名前空間情報を自動的に追加しません。私はあなたと同じチュートリアル (Teach Yourself WPF in 24 Hours) を行っており、VB への同じ変換を行っていると思います。

本で説明されているように名前空間を使用できるようにするには、名前空間情報を XAML クラスと XAML.VB コード ビハインドの両方に手動で追加する必要があることがわかりました。それでも、VB は VB のように名前空間をアセンブリに自動的に割り当てません。

これをプロジェクト テンプレートに含める方法を示す別の記事がここにあります。これにより、名前空間情報が自動的に作成されます - 新しいアイテムを追加するときに名前空間を自動的に追加します。

于 2013-09-30T14:57:08.920 に答える
0

セクションをチェックして、含めたライブラリ参照の上に警告アイコンReferencesがあるかどうかを確認してください。

ここに画像の説明を入力

表示された場合は、[プロジェクト] -> [プロパティ] -> [アプリケーション]に移動し、両方のライブラリが同じバージョンの.NET framework.

WarningsPS この問題が発生した場合は、次のセクションからも確認できます。

ここに画像の説明を入力

于 2020-03-12T13:11:42.260 に答える
-1

ビュー モデルに空のコンストラクターを追加し、ソリューションを再構築します。

于 2017-10-05T20:48:29.157 に答える