ASP.NET MVC命名空间重命名

问题描述 投票:15回答:6

我将我的项目从MyProjectName重命名为MyNewProjectName。我对解决方案进行了完整的查找/替换,并更改了测试项目。在Default.aspx.cs中,我得到一个InvalidOpterationException

“控制器名称'Home'在以下类型之间不明确:MyNewProjectName.Controllers.HomeController MyProjectName.Controllers.HomeController。”

我该如何解决这个问题?谢谢

asp.net-mvc namespaces
6个回答
33
投票

您是否尝试过重建(右键单击项目,然后选择“重建”)?同时检查bin以确保只有具有新名称的程序集。另外,仔细检查项目属性以验证是否输出了程序集的名称。如果您不确定输出的程序集的名称是什么,请从bin中删除所有dll并重建。


8
投票

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

ASP.Net MVC运行时使用反射来确定必须根据路由信息将请求传递给哪个控制器,并且它找到两个符合条件的控制器(具有相同的名称),并且每个控制器都在不同的程序集中。这就是你得到例外的原因。

执行清理似乎没有清除bin文件夹。所以你必须手动删除该文件。


6
投票

至于我自己,我在View文件夹的web.config中引用,一旦它被改变一切正常!


2
投票

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


0
投票

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

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


0
投票

在我的项目中,我遇到了同样的症状。要修复我必须:

  • 转到App_Start并检查类中的新命名空间是否正确。
  • 右键单击Global.asax并转到“show markup”并检查“Inherits”属性是否具有新的命名空间。

喜欢:

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

重建应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.