30

Blend 3.0を使用して、いくつかのWPFコントロールを含むプロジェクトを編集しようとしています。このプロジェクトは、Visual Studio 2008から既にコンパイルされ、正常に実行されています。

ただし、Blendでは、意味のない不思議なエラーが発生します。

たとえば、Controlから派生したクラスがあります。

namespace Company.WPFControls.SearchTextBox
{
    public class SearchTextBox : Control
    {
        ...
    }
}

そして、同じアセンブリ内のリソースでそれを使用して、スタイルを割り当てようとします。

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:Company.WPFControls.SearchTextBox" 

    <Style TargetType="{x:Type local:SearchTextBox}">
        ...
    </Style>
</ResourceDictionary>

Blendで次のエラーが発生します。

「SearchTextBox」という名前は、名前空間「clr-namespace:Company.WPFControls.SearchTextBox」に存在しません。

追加してアセンブリ名を指定しようとしました;assembly=Company.WPFControlsが、エラーが削除されません。

これを修正する方法、または少なくとも問題の原因を特定する方法はありますか?

4

5 に答える 5

30

WindowsVista64のBlend2でも同じ問題が発生しました。

私は通常、VS2008でソリューションをコンパイルし、すべてのプロジェクトで「Debug --x86」ターゲットを使用して、他の32ビットのみのプロジェクトと互換性を持たせています。

Blendは「Debug-AnyCPU」ターゲットを愛しているようです。基本的に、構成マネージャーを変更して、x86ではなく任意のCPUプラットフォームをターゲットにするようにしました。

それで...

  • BlendとVS2008でソリューションを開きます
  • VS2008では、メニューの[ビルド]->[構成マネージャー]を選択します
  • ソリューション構成に、すべてのプロジェクトに対して「デバッグ-任意のCPU」が含まれていることを確認します
  • VS2008でコンパイル
  • tadaaaaあなたのブレンドプロジェクトはそれらのエラーを更新して削除する必要があります...それは私にとってはうまくいきました

私はそれが本当にそれであるかどうかを確認するために反対のことをしました、そしてそれはイエスのようです...私は単にソリューションの変更をデバッグに戻しました-x86、すべてをクリーンアップし、再構築しました、そして私はまだエラー「存在しません[ ...]」

「なぜ?」は…わかりませんが、少なくとも今は動作します!

于 2009-12-10T23:07:08.170 に答える
16

問題は、Blendアセンブリの検索パスにあります。デフォルトでは、フォルダ「bin\Debug」内のアセンブリ内のクラスを検索します。ただし、プロジェクト構成ターゲットx86を設定した場合、出力パスは「bin \ x86\Debug」になります。したがって、VisualStudioの出力パスを「bin\ Debug」に変更する必要があります。Blendはすべてのクラスを検索します!

于 2010-11-22T09:57:25.313 に答える
13

Blendは、プロジェクトファイルで定義されているデフォルトのconfig/platformを使用していると思います。テキストファイルで編集することでこれを修正できるはずです。.csprojファイルを見ると、次のようになっているはずです。

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    ...

そのAnyCPUをx86に変更すると、期待どおりに機能するはずです。

于 2010-09-17T00:23:31.077 に答える
1

すべてのプロジェクトの出力パスを(リリースでも同じ)bin\Debugではなくに変更することで、この「任意のCPU/x86」の問題を修正することもできます。bin\x86\Debug

于 2011-10-07T09:49:26.400 に答える
1

私もこのようなエラーがありました。しかし、私にとっては、VisualStudioを使用せずにBlendでプロジェクトを直接再構築するのに役立ちました。

知らない人のために:あなたは「プロジェクト」->「プロジェクトの再構築」をクリックすることによってメニューのブレンドでこれをすることができます。少なくともBlend4では。

于 2011-12-15T13:55:29.100 に答える