95

以前は問題なくコンパイルできた小さな WPF アプリケーションがありますが、現在はそうではありません。どの時点でビルドが停止したかはわかりません。ある日はうまくいきましたが、次の日はうまくいきませんでした。

プロジェクトの構造は次のとおりです。

ここに画像の説明を入力

標準の .net dll 以外のプロジェクトや外部参照はありません。

問題が発生したユーザー コントロールは次のとおりです。

<UserControl x:Class="TimeRecorder.HistoryUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:TimeRecorder.ViewModel"
         xmlns:framework="clr-namespace:TimeRecorder.Framework"
         mc:Ignorable="d" Height="Auto" Width="Auto" Padding="5">
<UserControl.Resources>
    <local:HistoryViewModel x:Key="ViewModel"/>
    <framework:BoolToColorConverter x:Key="ColorConverter"/>
</UserControl.Resources>
<StackPanel DataContext="{StaticResource ViewModel}">

そして、ここに私が得るエラーがあります: http://i48.tinypic.com/5u1u8w.png

これはスクリーンショットの 1 つのファイルだけでなく、このプロジェクトのすべてのユーザー コントロール/ウィンドウ ファイルの xaml で同様の方法で追加したすべての参照であることに注意してください。

したがって、ファイルはそこにあり、ファイルの名前空間は正しく、xaml ファイルの名前空間/クラス名は (私の理解では) 正しいです。xamlを入力するとインテリセンスが得られるため、ファイルは正常に検出されますが、コンパイル時には検出されません。

他の投稿でこれに対する最も一般的な解決策は、.net フレームワーク バージョンです。現在、メイン プロジェクトとテスト プロジェクトの両方で .Net Framework 4 に設定されています。クライアント プロファイルではなくフル バージョン。

これが私が台無しにしたと思うものです: 構成マネージャーでは、両方のプロジェクトでプラットフォームが Any CPU に設定されていますが、これを解決しようとしたある時点で、メイン プロジェクトが x86 に設定され、テスト プロジェクトが Any に設定されていることに気付きました。 CPU。そのため、構成マネージャーのメイン プロジェクトに任意の CPU を手動で追加しました。しかし、正直なところ、これを正しく行ったかどうか、または行うべきかどうかさえわかりません。追加の質問として、構成マネージャーをデフォルトの状態にリセットする方法はありますか? これは主な問題について何か言いたいことがありますか? メイン プロジェクトが常に x86 に設定されていたのか、それとも何らかの方法で x86 に変更した後に壊れたのかはわかりません。前述のように、このプロジェクトはしばらくの間問題なくコンパイルされていました。

4

30 に答える 30

169

それが私に起こるたびに、ビジュアルスタジオを再起動し、ソリューションを再構築したところ、問題なく機能しました..理由はわかりません

于 2013-03-06T12:46:32.197 に答える
31

「名前空間に存在しません」というメッセージに加えて、x64 および ARM ターゲットのウィンドウを表示できないというメッセージもデザイナーから受け取りました。

ビルドを x86 モードに切り替え、リビルド ソリューションを実行してから、x64 モードに戻してから再度リビルドすると、[両方] の問題が修正されることがわかりました。

x64 ソリューションを再構築するだけでは何も起こりませんでした。

于 2013-05-09T11:12:06.347 に答える
12

これは、Visual Studio 2012 (Update 3) でうまくいったことです。

  • Visual Studio を再起動します
  • 現在のアセンブリを名前空間宣言に追加xmlns:framework="clr-namespace:TimeRecorder.Framework;assembly=MyAssembly
  • Build->Build Solution
于 2013-11-05T14:03:58.237 に答える
7

同様の問題がありました。私の場合、次のことをしなければなりませんでした

  • xaml から参照マークアップを削除します (この例では、<local:HistoryViewModel x:Key="ViewModel"/>)
  • クラスをビルドします (この例のファイルでは、HistoryViewModelクラスが含まれています)
  • ビルドしたら、参照マークアップを xaml に追加します。
  • 再構築

上記の方法は私にとってはうまくいきました。

于 2014-06-15T09:43:56.423 に答える
3

この問題がぐるぐると回り、数時間を無駄にしていました。別のユーザー コントロール dll をプロジェクトに移動したため、参照されている dll ではなく、プロジェクトでコンパイルされました。これによりプロジェクト全体が壊れたので、すべての名前空間、パス、およびファイル名を細心の注意を払ってチェックしました。x86とAnyCPUの間で、リリースとデバッグの間で変更して、objファイルを削除しようとしました。開いてすべてを保存し、再コンパイルしてもまだ喜びはありません。

以前にも同様の問題があったことを思い出してください。VS2013 でフラグが立てられたエラーは、XAML を変更する必要があった場所に直接関係していませんでしたが、

x:Name="myControl"

の代わりに、すべてのコントロールで

Name="myControl"

それを修正しました。

于 2014-08-30T00:44:50.370 に答える
2

xaml で名前空間を呼び出そうとしたときに、同じ問題に直面しました。クラスが名前空間で利用できないことを示していました。いろいろ探しました。最後に、この問題はVSにあることがわかりました。私はVS 2013を使用しています。以下の手順を試しました:

  1. ビルド --> 構成マネージャー --> アクティブ ソリューション プラットフォーム --> x64 と x86 および任意の CPU に変更されました。
  2. VS を閉じて、再度開きました。
  3. 変化する

    xmlns:VM="clr-namespace:MyFirstAppViewModel"
    

    xmlns:VM="clr-namespace:MyFirstAppViewModel;assembly=ViewModel"
    
于 2016-01-31T19:00:55.683 に答える
2

同様のことの奇妙な例を次に示します。

<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:controls="clr-namespace:Gtl.Ui.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="120"             
         Background="Transparent">
...
</UserControl>

コンパイルされます(VS2013)。

<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:controls="clr-namespace:Gtl.Ui.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="120"             
         Background="Transparent"
         IsVisibleChanged=onIsVisibleChanged>
...
</UserControl>

「Gtl.Ui.GtlにタイプUiが見つかりません」というエラーが発生します(コードビハインドにハンドラーメソッドが存在することを保証します)。回避策は、クラス コンストラクターにハンドラーを追加することです。

于 2015-06-16T12:11:17.690 に答える
2

このエラーは通常、最後のビルド中にプロジェクトが正常にビルドされなかった場合に発生します。

ステップ 1) まず、XAML または .cs ファイルからコードを引き起こしているすべてのエラーを削除し、F5 キーを押してプロジェクトをビルドおよび開始します。

ステップ 2) XAML にエラーの原因となるコードを 1 つずつ追加します。

于 2018-02-04T06:59:08.163 に答える
1
  • 名前を変更することをお勧めし x:Key="ViewModel"ます
  • 入力すると、local:VSは表示されますHistoryViewModelか?
  • また、あなたClasspublic
于 2013-03-11T16:03:09.863 に答える
0

私は xmlns:local="using:MyRootNamespace.ChildNamespace" を .xaml のヘッダーで使用していましたが、それを xmlns:local="clr-namespace:MyRootNamespace.ChildNamespace" に変更しました ...まあ、インテリセンスに任せただけです仕事、そしてそれはうまくいきました。

于 2015-06-24T14:21:41.080 に答える
0

オブジェクト レイアウトのバッファリングに問題があります。何かが名前変更または移動されると、失われます。私にとって一般的にうまくいくのは、完全に新しいクラスを作成して古いコードをすべてコピーし、それを新しいクラスで動作させてから、元のクラスを削除することです。場合によっては、新しいクラス名で起動して実行した後、名前を元の名前に戻してみることができます (ただし、通常はそうではありません)。

于 2015-04-28T14:02:01.150 に答える
0

追加する .dll ファイルのターゲット フレームワークは、アプリのターゲット フレームワークと同じである必要があります。

于 2016-08-19T10:08:27.457 に答える
0

この投稿に既に回答した数人が述べているように、Visual Studio を完全に終了して再起動すると、これらの問題が解決することがよくあります。ただし、実際にはビルドの失敗または依存関係の問題であるため、エラーが解決されない場合があります。

私が Visual Studio で WPF プロジェクトに取り組んだとき、XAML エラーは必ずしも根本的な原因ではなく、むしろ何失敗したかの兆候です。エラーリストウィンドウに表示されない.netフレームワークの依存関係の問題がある場合があり、出力ウィンドウを使用して実際に失敗しているものをデバッグする必要があります。

根本的な原因 (複数の XAML ファイルで非常に多くのエラーが発生する理由) は、実際の原因が完全に別のクラスまたはプロジェクトに由来する場合、実際には誤った症状である可能性があることを学びました。多くの場合、ビルドの失敗につながります。特に、複数のプロジェクトを含むソリューションでは、1 つのプロジェクトで生成に失敗する DLL 依存関係が存在する可能性があり、XAML ドキュメント エラーとして表示されるカスケード エラーにつながります。

XAML の欠点の 1 つは、要素名が実際のクラスと一致するため、XAML を検証するためにライブラリのビルド コピーが必要になることです。そのため、ライブラリが正しく構築されていないために XML エラーが発生することがあります。また、新しいコントロールを追加するときに、プロジェクトをビルドしていないと、新しいクラスを見つけることができません。エラーを見るときに注意すべきことです。

XAML ファイル以外の基になるビルドの問題を修正すると、依存する各プロジェクトをビルドできるようになります。このような状況では、複数の XAML ファイルでスローされるエラーは、ドキュメントの構造とは関係なく、基になる依存関係の障害とは関係ありません影響を受ける XAML ドキュメントが必要なプロパティとバインディングをレンダリングする機能が損なわれる可能性があります。これは最初は誤解を招きますが、理解すれば根本的な問題を見つけるのに役立ちます。

于 2021-05-24T20:59:28.077 に答える
0

これは私にとって繰り返し起こる問題です。警告タブを調べて解決策を見つけたときの1つ。これは.NET フレームワークのバージョンの問題であり、次のように述べられています。

警告 9 プライマリ リファレンス "myDll" は、".NETFramework,Version=v4.5.2" フレームワークに対してビルドされているため、解決できませんでした。現在対象のフレームワーク「.NETFramework,Version=v4.0」より上位のバージョンです。

于 2014-10-17T12:53:05.403 に答える