VS 2008升级正在改变我的数据集设计器名称空间

时间:2009-02-06 14:39:09

标签: c# visual-studio-2008 visual-studio-2005

我一直在将我们的解决方案从VS 2005升级到VS 2008;仍然以.net 2.0框架为目标。转换向导很简单,我从来没有转换失败。到目前为止,我唯一的优点是我无法在升级后立即编译,因为VS已经更改了我的一些命名空间导致命名冲突。

例如,我有一个DAL项目(我们称之为MyNameSpace),它有一个“Clients”文件夹,其中包含一个名为“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 个答案:

答案 0 :(得分:7)

您可以通过提供应在以下位置生成代码的命名空间来解决此问题:

打开xsd文件的属性,并将代码的名称空间放在“自定义工具命名空间”旁边。然后在xsd文件上单击右键并选择“运行自定义工具”,您就完成了。

答案 1 :(得分:2)

我相信命名空间来自xsd文件的位置。我想从2003年开始,你把xsd放到了命名空间中的文件夹。

在您的情况下,如果将xsd移动到DAL项目的根目录,则应更正代码。我意识到这可能不太理想,但我认为这就是DataSet生成器的工作原理。

令我惊讶的唯一事情是命名空间不包含2005解决方案中的“客户端”部分。感觉它是在根中生成的,但随后移动到子文件夹而不重新生成。

答案 2 :(得分:0)

我不知道“自定义工具命名空间”文件属性!谢谢,这正是我想要的! :d