1. ホーム
  2. c#

[解決済み] 名前 <...> が名前空間 clr-namespace <...> に存在しない。

2022-02-09 17:02:26

質問

小さな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}">

そして、こんなエラーが出ています。

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

つまり、ファイルがあり、ファイル内の名前空間が正しく、xamlファイル内の名前空間/クラス名が(私の理解では)正しいのです。xamlを入力するときにintellisenseが表示されるので、そのときはファイルを見つけることができますが、コンパイルするときには見つかりません。

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

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

解決方法は?

この現象が起こるたびに、Visual Studioを再起動し、ソリューションを再構築すると、うまくいきました。