我一直在将我们的解决方案从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会将命名空间名称更改为数据集的名称,而不是文件夹的名称。
这是转换向导中的配置吗?我想让向导只更新项目文件并保留代码。
答案 0 :(得分:7)
您可以通过提供应在以下位置生成代码的命名空间来解决此问题:
打开xsd文件的属性,并将代码的名称空间放在“自定义工具命名空间”旁边。然后在xsd文件上单击右键并选择“运行自定义工具”,您就完成了。
答案 1 :(得分:2)
我相信命名空间来自xsd文件的位置。我想从2003年开始,你把xsd放到了命名空间中的文件夹。
在您的情况下,如果将xsd移动到DAL项目的根目录,则应更正代码。我意识到这可能不太理想,但我认为这就是DataSet生成器的工作原理。
令我惊讶的唯一事情是命名空间不包含2005解决方案中的“客户端”部分。感觉它是在根中生成的,但随后移动到子文件夹而不重新生成。
答案 2 :(得分:0)
我不知道“自定义工具命名空间”文件属性!谢谢,这正是我想要的! :d