2009-02-06 8 views
2

J'ai mis à jour nos solutions de VS 2005 à VS 2008; ciblant toujours le framework .net 2.0. L'assistant de conversion est simple et je n'ai jamais eu d'échec de conversion. Le seul bœuf que j'ai eu jusqu'à présent est que je ne peux pas compiler immédiatement après la mise à niveau car VS a changé certains de mes espaces de noms provoquant des collisions de noms. Par exemple, j'ai un projet DAL (appelons-le MyNameSpace) qui a un dossier "Clients" avec un jeu de données nommé "dsClient".La mise à niveau de VS 2008 modifie mes espaces de noms de concepteur de dataset

Voici ce que la classe de concepteur de jeux de données ressemble avant la conversion:

namespace MyNameSpace 
{ 
    public partial class dsClient : global::System.Data.DataSet 
    { 
    } 
} 

Au cours du processus de conversion, VS est en train de changer ma classe de concepteur et en ajoutant le nom du dossier à la fin de l'espace de noms il ressemble maintenant ceci:

namespace MyNameSpace.Clients 
{ 
    public partial class dsClient : global::System.Data.DataSet 
    { 
    } 
} 

le problème c'est que j'ai un autre fichier de classe dans ce dossier avec le même nom:

namespace MyNameSpace 
{ 
    public class Clients 
    { 
    } 
} 

Cela provoque une collision de nommage et je dois corriger manuellement les modifications apportées par VS. Dans certains cas, VS remplace le nom de l'espace de nom par le nom de l'ensemble de données plutôt que le nom du dossier.

Est-ce une chose de configuration dans l'assistant de conversion? Je voudrais que l'assistant mette à jour les fichiers du projet et laisse le code seul.

Répondre

7

Vous pouvez résoudre ce problème en fournissant l'espace de noms le code doit être généré en:

Ouvrez les propriétés du fichier xsd et de mettre l'espace de noms pour le code à côté de « Namespace Outil personnalisé ». Ensuite, cliquez à droite sur votre fichier xsd et sélectionnez "Run Custom Tool" et vous avez terminé.

2

Je crois que l'espace de noms provient de l'emplacement du fichier xsd. Je pense que depuis 2003, le dossier dans lequel vous avez placé le xsd l'a fait entrer dans l'espace de noms.

Dans votre cas, si vous déplacez le fichier xsd à la racine du projet DAL, votre code doit être corrigé. Je réalise que ce n'est peut-être pas idéal, mais je pense que c'est ainsi que fonctionne le générateur DataSet. La seule chose qui me surprend est que l'espace de noms n'a pas inclus la partie "Clients" dans votre solution 2005. On dirait qu'il a été généré dans la racine, mais ensuite déplacé dans le sous-dossier sans régénération.

+0

"La seule chose qui me surprend est que l'espace de noms n'incluait pas la partie" Clients "dans votre solution de 2005" - Maintenant que j'y pense, en 2005, nous avons dû changer manuellement la classe générée automatiquement fichiers après l'ajout d'un nouveau jeu de données. Cela ressemble à une "caractéristique" du générateur de jeu de données. –

+0

Droite. La réponse d'Albic vous donne la solution la plus permanente, si vous voulez que l'espace de noms diffère de l'emplacement dans le projet. –

0

Je n'étais pas au courant d'une propriété de fichier "Espace de noms d'outil personnalisé"! Merci, c'est exactement ce que je cherchais! : D

Questions connexes