29 votes

Expression Blend: L'obtention de l'erreur "XXX" n'existe pas dans l'espace de noms "XXX", mais pas dans VS2008

Je suis en train d'utiliser le Mélange 3.0 pour modifier un projet qui contient des contrôles WPF. Ce projet déjà compile et fonctionne très bien à partir de Visual Studio 2008.

Dans le Mélange cependant, j'obtiens des erreurs mystérieuses qui n'ont pas de sens:

Par exemple, j'ai une classe qui dérive de Contrôle :

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

Et j'essaie de l'utiliser dans une ressource, dans la même assemblée, à attribuer un style:

<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>

J'obtiens l'erreur suivante dans le Mélange:

Le nom de "SearchTextBox" ne pas exister dans l'espace de noms "clr-namespace:de l'Entreprise.WPFControls.SearchTextBox".

J'ai essayé en précisant le nom de l'assemblage, par l'ajout d' ;assembly=Company.WPFControls , mais elle ne supprime pas l'erreur.

Est-il possible de résoudre ce problème, ou au moins de comprendre d'où vient le problème?

30voto

FrankyB Points 345

J'ai eu le même problème avec un Mélange de 2, sur un ordinateur Windows Vista 64.

J'ai l'habitude de compiler ma solution dans VS2008, avec un "Debug - x86" cible sur tous mes projets, de sorte qu'il est compatible avec certains autres de 32 bits uniquement des projets.

Il ressemble Mélange aime le "Debug - any CPU" cibles. En gros, j'ai changé ma configuration manager pour qu'il cible un PROCESSEUR plates-formes au lieu de x86.

Alors...

  • Ouvrez votre solution dans le Mélange et dans VS2008
  • Dans VS2008, choisissez le menu Build -> Le Gestionnaire De Configuration
  • S'assurer que votre solution configuration a un "Debug - any CPU" pour tous les projets
  • Compiler dans VS2008
  • tadaaaa Votre mélange projet doit mettre à jour et supprimer ces erreurs... eh bien, il l'a fait pour moi

J'ai fait l'inverse pour vérifier si c'était vraiment ça, et il semble que oui... j'ai simplement repris les solution changements Debug - x86, nettoyé de tout, et rénovée, et j'ai encore de retour avec l'erreur "N'existe pas [...]"

Comme pour le "Pourquoi?"... Je ne sais pas, mais au moins ça marche maintenant!

16voto

mr_squall Points 151

Le problème se situe dans le chemin de recherche de l'assemblage Blend. Par défaut, il recherche les classes dans les assemblys dans le dossier "bin \ Debug"! Mais si vous définissez la cible de configuration du projet x86, votre chemin de sortie sera "bin \ x86 \ Debug". Vous devez donc changer votre chemin de sortie dans Visual Studio en "bin \ Debug" et Blend trouvera toutes vos classes!

13voto

Scott Bilas Points 4958

Je pense que Blend utilise la configuration / plateforme par défaut définie dans le fichier de projet. Vous devriez pouvoir résoudre ce problème en le modifiant avec un fichier texte. Si vous regardez dans votre fichier .csproj, vous devriez voir quelque chose comme ceci:

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

Changez AnyCPU en x86 et cela devrait fonctionner comme vous l'attendez.

1voto

Schneider Points 3812

Vous pouvez également résoudre ce problème «Any CPU / x86» en modifiant le chemin de sortie de tous vos projets en bin\Debug au lieu de bin\x86\Debug (idem pour la version).

1voto

alex Points 26

J'ai également eu une erreur comme celle-ci. Mais pour moi, cela a aidé à reconstruire le projet directement dans Blend sans utiliser Visual Studio.

Pour ceux qui ne le savent pas: vous pouvez le faire dans Blend dans le menu en cliquant sur "Projet" -> "Reconstruire le projet". Au moins dans Blend 4.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X