名前<…>が名前空間clr-namespace <…>に存在しません


84

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

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

ここに画像の説明を入力してください

標準の.netdll以外に、他のプロジェクトや外部参照はありません。

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

<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 Framework4に設定されています。クライアントプロファイルではなく、フルバージョン。

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


参考までに、ProgressTimeSpentUserControl.xamlを読むことができます。あなたはそれをぼかすより良い仕事をしたいかもしれません;)
それはNotALieです。

大したことではありません:)それは私がいくつかのものをテストしていた一時ファイルですが、他のものは所属するビューモデルを持つプロジェクトの一部であるため、私のOCDはそれを関連性がないものとしてマークするように私に言いました;)
ardal 2013

2
2日前に非常によく似た問題が発生しました。構成マネージャーがすべてをx86ではなく「任意のCPU」としてビルドするように設定しようとすると、ビルドが停止しました。私は2つのことをしたことがわかりました。1つはリリースモードのままにし、もう1つはビルド構成マネージャーで、アセンブリにビルドのマークが付いていない場合がありました。私の修正は、利用可能なすべてのモード(x86、混合プラットフォーム、および任意のCPU)を徹底的に調べ、すべてのアセンブリをビルドするように設定することでした。何が悪いのかを発見したときに、考えないことで自分を蹴るようなものの1つに聞こえます!
ジェイ

(作業の答えと)同様の質問:stackoverflow.com/questions/28216096/...
Oleksa

2018 .NET 4.6.1にここに着陸した人のために、VSを再起動してから再構築すると、動作を開始しました。どこかにタイプOがあると思っていたよりも間違いなく多くの時間を費やしました。
Mwspencer 2018年

回答:


143

それが私に起こるたびに、私はちょうどビジュアルスタジオを再起動し、ソリューションを再構築しました、そしてそれはうまくいきました..理由は言えません


17
追加することが1つあります。管理者権限でVSを再起動した場合にのみ、プロジェクトが正常に構築されます。通常の権限では、ソリューションを再起動して再構築しても役に立ちませんでした。
セブンエイト2013年

1
問題の原因となっている解決策を保存するだけです。管理者モードでVSを起動し、ソリューションファイルから「すべて再構築」を開始します。機能した。とても不気味です。
pollaris 2017年

12
これが5年経ってもまだ解決されていないのを見て悲しい。VS 2017でも同じ問題が存在し、同じ解決策が引き続き機能します。
codeHacker 2018

@gil krxamarinとそのXMLで同様の問題が発生しました。プロジェクトをネットワークフォルダからローカルフォルダに移動すると問題が解決することがわかりました。ここではそうなのかしら。
vdidxho 2018年

3
管理者権限から始めても、問題は解決しませんでした。
MindRoasterMir

30

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

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

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


5
もう1つのステップがあります。x86に再構築してから、デザイナーでxamlを開く必要があります。そして、x64に戻ります。
dzienny 2014年

2
Visual Studioを再起動してから再構築しようとしましたが、それでも同じエラーが発生していました。@ Jerry-あなたのソリューションはVS2012で私のために働いたものでした。
バリー

ジェリー、それは疑わしいように聞こえますが、あなたの解決策は機能します!プロジェクトをAnyCPU用にコンパイルしましたが、どういうわけかx86でコンパイルしてから、この問題を解決しました。AnyCPUはx86にフォールバックする可能性があると思いますが、VSのバグのため、x86でコンパイルしない限り、コードのその部分はビルドされませんでした。
ウェインロー

はい、「名前空間に存在しません」に加えて、その他のエラーを最初に解決する必要があります。
pollaris 2017

VS2017でもまだ私に起こりました。VSを閉じて再度開くことができませんでした。しかし、あなたの解決策はそうしました。
Gordon Slysz

14

私が助けたのは(特にこのエラーがで発生した場合)、問題を引き起こしている参照App.xamlコメントアウトし、再構築してからコメントを外すことです。これにより、エラーでビルドを停止するのではなく、プロジェクト全体を実際にビルドできるようになると思います。

私が収集できることから、アプリは特定の順序でファイルをビルドしようとしているため、App.xaml参照内の他のクラスファイルエラーの場合、またはおそらくエラーの原因となっているファイルが正しくコンパイルされていないため、なぜコンパイルされないのですか?その名前空間でファイルが見つかりません。


3
あなたが言ったときあなたは正しい考えを持っていました:the app is trying to build the files in a certain order。これにより、自分の.csprojファイルを調べました。そもそもありApp.xaml.csました。次に、このエラーを示したファイルの下に移動し、再構築すると、エラーはなくなりました。ありがとう!
ステファン2016年

この解決策は、他の人がうまくいかなかったときに私のために働いた。感謝
RamWill

12

これは、Visual Studio 2012(Update 3)で私のために働いたものです。

  • VisualStudioを再起動します
  • 現在のアセンブリを名前空間宣言に追加する xmlns:framework="clr-namespace:TimeRecorder.Framework;assembly=MyAssembly
  • Build -> Build Solution

私のために働いたVS2015Professional update3、ありがとう:)
EricG 2017年

確認できます。VisualStudio2019でも動作します。
20

9

ソリューションを再構築します(クリーンな場合はビルドがうまく機能する場合があります)。次に、エラーリストを見て、一番下までスクロールします。これは、アセンブリのコンパイルを許可していないエラーを示している可能性が高く、XAMLコンパイラは、新しいアセンブリではなく、キャッシュされたバージョンのアセンブリを使用している可能性があります。構築することを意味します。


7

私も同様の問題を抱えていました。私の場合、私は次のことをしなければなりませんでした

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

上記の方法は私のために働いた。


これで問題が解決した理由を理解するには、私の回答を参照してください。
jaysoncopes 2016年

6

私にとってうまくいったこと:-ソリューション構成をデバッグからリリースに切り替える-構成をリリースからデバッグに戻す


奇妙な。これは私にとってもうまくいきました。各リリースでもクリーンビルドを行いました。
GeoffCoope 2016年

4

今日、Visual Studio 2017 CommunityEditionでこの問題に遭遇しました。ここですべての提案を試し(VS 2017をリセットし、x64からx32に変更し、再び元に戻すなど)、他のソースから役に立たなかった。Intellisenseはすべてがそこにあることを知っていますが、毎回同じエラーが発生していました。

とにかく、私の修正は非常に簡単であることが判明しました...あなたが問題に数時間を費やしたとき、彼らはいつもではありません!

基本的に、私は次のことをしました...

  1. xamlファイルから問題のあるコードを削除します(私の場合はわずか3行)
  2. プロジェクトをビルドして、ビルドを成功させる
  3. この時点で、レイアウトはデザイナーウィンドウに魔法のように表示されました。これは良い兆候でした。
  4. ポイント1で削除したコードを再挿入しました。xmlns:エントリを含みます。
  5. この時点では、青い波線は表示されないはずです...うまくいけば
  6. プロジェクトを再構築する

ビルドを成功させるには、VSやアセンブリ内の「何か」をリセットする必要があるようです。ビルドが成功したら、コードをもう一度挿入してみてください。


これは実際に私のために働いた唯一のものでした。これが、私がXAMLでVisualStudioを嫌う理由です。このハッキーなタイプの構成でのプレイは受け入れられません。
悟空

3

どの解決策も私にはうまくいきませんでした。私はそれをこのように修正しました:

  • ライブラリのdllを参照から削除します
  • (dllファイルだけでなく)ライブラリのソースコードをダウンロードします
  • ライブラリのプロジェクトをビルドして、新しいdllファイルを取得します
  • 新しいdllファイルをメインプロジェクトの参照に追加します

3

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

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

x:Name="myControl"

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

Name="myControl"

それを修正しました。


xを省略して、同じ問題に再び遭遇しました。これは、私自身のユーザーコントロールでのみ発生することに注意してください。
ムーンワックスがけ2015年

あなたは私のヒーローです。
ホールデン

3

ターゲットフレームワーク「.NetFramework4.5」のアプリケーションを「.NetFramework4.6」に変更しましたが、機能しました。


ターゲットを4.6.1から4.6に変更しましたが、それも機能しました。
GisMofx

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>

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


私は上記のコメントに同意しません。この種の「コンテキストの拡大」は、OPの状態だけが原因ではない、このようなバグの原因を特定するのに役立つことがよくあります。
CJBrew 2016

2

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

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

    xmlns:VM="clr-namespace:MyFirstAppViewModel"
    

    xmlns:VM="clr-namespace:MyFirstAppViewModel;assembly=ViewModel"
    

2

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

ステップ-1)最初にXAMLまたは.csファイルからすべてのエラーの原因となるコードを削除し、F5キーを押してプロジェクトをビルドして開始します。

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


1
  • 名前を変更することをお勧めし x:Key="ViewModel"ますグリッチがあるかもしれません
  • 入力すると、local:VSは表示されますHistoryViewModelか?
  • また、あなたClasspublic


1

コマンド「RunCodeAnalysis」を実行すると、すべてが再構築され、ほとんどの場合、問題が修正されることがわかりました(プロジェクトを右クリック> [分析]> [コード分析の実行])。これはまた、一般的に、文字列などを見つけることができるように、リソースファイルも再構築します。


ただし、最近見つけたように、これでも機能しません。VSを閉じて再起動する必要がありました。ああ、まあ...
ジェフ

1

このスレッドですべてのソリューションを試しましたが、どれも機能しませんでした。ソリューション構成が原因であることが判明しました。私のWPFアプリは、それを必要とするいくつかのネイティブ依存関係のためにX64用にビルドするように設定されましたが、ソリューション構成はプロジェクトのAnyCPUに設定されたままでした。ソリューション構成マネージャーでプロジェクトの新しいX64構成を作成することにより、XAMLデザイナーは最終的に私のタイプと名前空間を認識できるようになりました。


1

.xamlファイルに名前空間を追加する前に、既存のコードが原因でコンパイルエラーが発生していないことを確認してください。

すべてのコンパイルチェックに問題がなければ、ソリューションを再構築し、クラスまたはプロパティを使用するために必要な名前空間を追加してみてください。


0

これは私にとって繰り返し発生する問題です。ある時、私は警告タブを調べて解決策を見つけました。これは.NETFrameworkバージョンの問題であり、次のように述べられています。

警告9プライマリ参照「myDll」は「.NETFramework、Version = v4.5.2」フレームワークに対して構築されているため、解決できませんでした。これは、現在ターゲットにされているフレームワーク「.NETFramework、Version = v4.0」よりも高いバージョンです。


0

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


0

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


0

問題は、x86ターゲットを作成するときに、特定のプロジェクトの出力パスがbin \ x86 \ Debugに設定されることです。Expressionblendはこれをまったく好まないようです。bin \ Debugの内容にのみ関心があるようです。

たとえば、x86プロジェクトの出力パスをbin \ debugに変更した場合は、それが機能することがわかると思います。まあ、とにかく私のために働きます:)


0

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


0

私は同じ問題に直面していました。このエラーが発生しますが、それでもプロジェクトを正常にビルドできます。不便なのは、UIデザインが表示されないことです(または、コードをクリーンアップして、煩わしい波状の行を削除したいだけです)。多くの投稿を読んでいくつかのことを試してみましたが、次の作品は魅力のようです。

Visual Studio 2019でこれを試しました:

ソリューション->プロパティ->構成プロパティを右クリックし、プロジェクト構成をデバッグからリリースに、またはその逆に変更します。

その後、ソリューションを再構築します。それはあなたの問題を解決することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.