ASP.NET MVC 命名空间重命名

16

我将我的项目从MyProjectName重命名为MyNewProjectName。 我在整个解决方案中进行了查找/替换,并且也更改了测试项目。 在Default.aspx.cs中,我遇到了一个InvalidOpterationException,其中包含以下信息:

"The controller name 'Home' is ambiguous between the following types: MyNewProjectName.Controllers.HomeController MyProjectName.Controllers.HomeController."

如何解决这个问题? 谢谢。

6个回答

33

您尝试过重建吗(右键单击项目,选择“重建”)?还要检查 bin 文件夹,确保只有具有新名称的程序集存在。此外,请仔细检查项目属性以验证程序集的名称是否被输出。如果您不确定输出程序集的名称是什么,请从 bin 文件夹中删除所有 dll 文件并重新构建。


1
我进行了重建和清理。我进行了Windows文件搜索,显然,VS没有清除所有内容。 - Daniel A. White
2
这真的很烦人 - 我刚刚遇到了同样的问题。真是麻烦。"clean" 应该做什么??? - Andrew Flanagan
1
我猜它删除了项目名称的文件,而不是所有的dll文件。 - Daniel A. White

8
你需要检查MVC Web项目中的/bin文件夹,并删除其中的所有内容并进行新的构建,或者删除旧的DLL(MyProjectName.dll)。

ASP.Net MVC运行时使用反射来确定请求必须基于路由信息传递到哪个控制器,并且它发现符合条件(具有相同名称)的两个控制器位于不同的程序集中。这就是为什么你会收到异常信息。

执行Clean似乎无法清除bin文件夹。因此,您必须手动删除该文件。


1
这是bin文件夹中的旧程序集。好选择。+1 - KP.

7

对于我自己而言,在web.config中有一个对View文件夹的引用,一旦更改了它,一切都可以正常工作!


1
这是我的问题。我更改了项目的Assembly和Namespace,无法加载页面。更新Views web.config中的命名空间条目是所需要的部分。谢谢! - Stacy Vicknair

2

双击或右键单击MyProject并打开。在应用程序设置中,更改程序集名称和根命名空间以与重命名的项目名称相匹配。


0

在项目上右键单击,选择“在Windows资源管理器中打开文件夹”。

删除 /bin 和 /obj 中的“OLDPROJECTNAME”对象。


0
在我的项目中,我遇到了相同的症状。为了解决这个问题,我必须要:
  • 进入 App_Start 文件夹并检查类中的新命名空间是否正确。

  • 右键单击 Global.asax 文件并选择“显示标记”,检查“Inherits”属性是否包含你的新命名空间。

例如:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyNewNamespace.MvcApplication" Language="C#" %>

重新构建应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接