【问题标题】:How do I fix Visual Studio (2013) namespace collision when moving files移动文件时如何修复 Visual Studio (2013) 命名空间冲突
【发布时间】:2015-09-16 22:46:10
【问题描述】:

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

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

有人知道这是为什么吗?或者如何避免?我通过手动更改我所有的命名空间并且不允许 VS “帮助”我来修复它。

【问题讨论】:

  • 如果您确实给出了新旧命名空间的示例,而不是文件和文件夹名称,这将有所帮助。类命名空间(我假设你指的是,因为这是 VS 关心的那种)与 .NET 中的文件名或位置没有任何关系。
  • 感谢您的评论。该文件夹是包含的 .aspx .aspx.cs 和设计器的命名空间

标签: c# asp.net visual-studio-2013


【解决方案1】:

有几个选项:

  • 如果您有 Resharper,请使用 移动 功能
  • 不要在项目中复制/粘贴,而是应拖放 - 这样会更新 proj 文件并保持文件之间的关系(即,当您在后面生成代码时等)。然后,在您放下的那一刻,去更改已放置文件中的命名空间。
  • 在目标文件夹中创建一个新文件,然后复制旧文件的内容(命名空间声明中的所有内容)。新文件将自动定义适当的命名空间。

这些都不会整理引用已复制/移动的旧代码的任何代码。您必须自己修复这些引用,除非您使用 Resharper(作为迁移的一部分,它会为您执行此操作)。

【讨论】:

  • 谢谢,这正是我事后学到的。我正在寻找的是为什么 VS 用它的实用程序改变了这两个命名空间。
【解决方案2】:

如果您在谈论类命名空间,问题是 VS 无法知道您要重命名哪个“添加”命名空间。它只是将与当前名称匹配的所有名称(在其当前范围内)重命名为新名称。如果您想避免这种情况发生,他们将需要至少在不同的 VS 项目中。 VS 不关心文件名或路径,除非找到它们进行编译所需的最小程度。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多