如何修复Visual Studio(2013)在移动文件时的命名空间冲突

本文关键字:文件 移动 冲突 命名空间 Visual 何修复 Studio 2013 | 更新日期: 2023-09-27 18:13:01

在项目中移动文件时,我遇到了一些非常令人沮丧的命名空间冲突问题。在我学会了更好的移动文件的方法之后,我希望能找到一个解决方案。以下是我的经历:

通过剪切/粘贴移动文件后,我有一个命名空间碰撞(我在不同的文件夹中有许多相同名称的页面,例如Foo/Add。.aspx和Bar/Add.aspx)。当我将页面、关联的后台代码和设计器移动到新文件夹时,发生了名称空间冲突。当我更新命名空间时,VS显示了一个小红色标记,表明它想通过重命名来"帮助"我。我让VS继续"帮助",只是在几次尝试后才发现它也在重新命名我从文件夹中移动的文件,例如,当我重命名Foo/Add时。aspx VS也改变了Bar/Add.aspx

的命名空间

有人知道这是为什么吗?或者如何避免它?我通过手动更改我所有的命名空间,不允许VS"帮助"我解决了这个问题。

如何修复Visual Studio(2013)在移动文件时的命名空间冲突

有几个选项:

  • 如果你有Resharper,那么使用Move功能
  • 不要复制/粘贴项目,相反,你应该拖放-这样项目文件被更新,文件保持它们的关系(例如,当你生成代码后,等等)。然后,在删除后立即更改删除文件中的名称空间。
  • 在目标文件夹中创建一个新文件,然后复制旧文件的内容(名称空间声明中的所有内容)。新文件已经自动定义了一个合适的命名空间。

这些都没有整理引用已复制/移动的旧代码的任何代码。你必须自己修复这些引用,除非你使用Resharper(它会为你做这个作为移动的一部分)。

如果你在谈论类命名空间,问题是VS没有办法知道你想要重命名哪个"添加"命名空间。它只是将(在其当前作用域中)与当前名称匹配的所有名称重命名为新名称。如果你想避免这种情况的发生,他们将需要至少在不同的VS项目。VS不关心文件名或路径,除非在编译时需要找到它们。

我所做的是,我总是在目标项目中创建我的类,并将源类的内容复制到目标类。这样你就安全了。

我怀疑是否有什么神奇的方法可以避免这个问题。