Обновление VS 2008 меняет пространства имен моего дизайнера наборов данных - PullRequest
2 голосов
/ 06 февраля 2009

Я обновляю наши решения с VS 2005 до VS 2008; все еще ориентируясь на .net 2.0. Мастер преобразования прост, и у меня никогда не было ошибки преобразования. Единственный недостаток, который у меня был до сих пор, это то, что я не могу сразу скомпилировать после обновления, потому что VS изменил некоторые из моих пространств имен, вызывая конфликты имен.

Например, у меня есть проект DAL (назовем его MyNameSpace), в котором есть папка «Клиенты» с набором данных с именем «dsClient».

Вот как выглядит класс конструктора набора данных перед преобразованием:

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

В процессе преобразования VS изменяет мой класс конструктора и добавляет имя папки в конец пространства имен, так что теперь это выглядит так:

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

Проблема в том, что в этой папке есть другой файл класса с таким же именем:

namespace MyNameSpace
{
    public class Clients
    {
    }
}

Это вызывает конфликт имен, и мне приходится вручную исправлять изменения, сделанные VS. В некоторых случаях VS изменяет имя пространства имен на имя набора данных, а не на имя папки.

Это конфигурация в мастере преобразования? Я бы хотел, чтобы мастер просто обновил файлы проекта и оставил код в покое.

Ответы [ 3 ]

7 голосов
/ 06 февраля 2009

Это можно исправить, предоставив пространство имен, в котором должен быть сгенерирован код:

Откройте свойства файла xsd и поместите пространство имен для кода рядом с «Пространством имен пользовательских инструментов». Затем щелкните правой кнопкой мыши на своем файле xsd и выберите «Запустить пользовательский инструмент», и все готово.

2 голосов
/ 06 февраля 2009

Я считаю, что пространство имен происходит из местоположения файла xsd. Я думаю, что вплоть до 2003 года папка, в которую вы поместили xsd, превратила его в пространство имен.

В вашем случае, если вы переместите xsd в корень проекта DAL, ваш код должен быть исправлен. Я понимаю, что это не может быть идеальным, но я думаю, что именно так работает генератор DataSet.

Единственное, что меня удивляет, это то, что пространство имен не включало часть "Клиенты" в ваше решение 2005 года. Такое ощущение, что он был сгенерирован в корне, но затем перемещен в подпапку без восстановления.

0 голосов
/ 24 августа 2009

Я не знал о свойстве файла "Пространство имен пользовательских инструментов"! Спасибо, это именно то, что я искал! : D

...