【问题标题】:The type or namespace name 'Models' does not exist in the namespace 'PartyInvites'命名空间“PartyInvites”中不存在类型或命名空间名称“Models”
【发布时间】:2014-04-09 17:17:31
【问题描述】:

使用 VS2013 Pro、TFS 2013 Express

我目前正在学习 asp.net mvc 5 一书中的教程,一切都很好。 昨天我在本地机器上安装了 TFS 2013 Express,将项目复制到 TFS 文件夹并将项目添加到源代码管理。

自从这样做以来,我现在遇到了类似主题的错误。在这种情况下,控制器只是有一个 using:

using System.Web;
using System.Web.Mvc;
using PartyInvites.**Models**;

namespace PartyInvites.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        //public ActionResult Index()
        //{
        //  return View();
        //}

        public ViewResult Index()
        {
            int hour = DateTime.Now.Hour;
            ViewBag.Greeting = hour < 12 ? "Good Morning" : "Good Afternoon";
            return View();
        }

        [HttpGet]
        public ViewResult RsvpForm()
        {
            return View();
        }

        [HttpPost]
        public ViewResult RsvpForm(**GuestResponse** guestResponse)
        {
            //todo: Email response to the party organizer
            return View("Thanks", guestResponse);
        }
    }
}

在 HttpPost 中,对象“GuestResponse”是红线所在的位置,但该对象位于模型命名空间等中。EDIT 红线也在using 声明在顶部。

现在我注意到,如果我从解决方案文件夹中删除 SUO 文件并打开解决方案,错误就会消失,但一旦我保存解决方案并重新打开它,错误就会再次出现。我还注意到我知道的其他几个项目也存在同样的问题。

另外 - 当我构建解决方案时,他们构建的解决方案没有错误,但红线仍然存在。

我认为问题出在 SUO 文件和 TFS 上,因为该解决方案在无 TFS 版本中工作得非常好,但我找不到 SUO 和 TFS 的解决方案。我是 PC 的唯一用户,拥有完整的管理员权限。

Q) 有谁知道如何解决这个问题,这样我就不必一直删除 SUO 文件了?

编辑 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PartyInvites.Models
{
    public class GuestResponse
    {
        public string Name { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public bool? WillAttend { get; set; }
    }
}

编辑 2

我现在尝试将 FILE>SourceControl>Change source control 更改为 Unbind from source control,它现在按预期工作......但它现在不在源代码管理中。我认为这个问题现在归结为 TFS 相关。 - 更新。将其重新绑定回 TFS 后,问题又回来了。

【问题讨论】:

  • 如果你完全限定类名会发生什么?可能存在命名空间冲突
  • 不,没有命名空间冲突,项目构建良好。红线也在“使用PartyInvites.Models”;在顶部的“模型”上。很奇怪。
  • 您能否发布包含GuestResponse 的命名空间声明的类。这将帮助我们验证命名空间。您也可以尝试“清洁解决方案”,然后尝试“重建解决方案”,但如果没有课程内容,我们无能为力:/
  • @Tony 我已经编辑了问题并添加到了 GuestResponse 类中。如您所见,名称空间等很好。实际项目编译和运行没有错误,并且在删除 SUO 文件(或卸载/重新加载项目)后第一次加载项目时问题就消失了。是的,也尝试过清理/重建。
  • 我很想知道您是否将 PartyInvites.Models 重命名为 PartyInvites.MyModels 并更新 using 语句然后重建,如果这将是绷带的话。不知道为什么 SUO 会在这里有所作为,因为它不是一个解决方案选项 - 耸耸肩。

标签: c# asp.net-mvc tfs asp.net-mvc-5


【解决方案1】:

我终于找到了一个有效的答案。这是导致问题的VS2013中的一个错误,下面是答案的链接。

但简而言之,关闭“在解决方案或项目打开时获取所有内容”可以解决问题,虽然不是一个完整的解决方案,但对我来说它解决了问题

http://connect.microsoft.com/VisualStudio/feedback/details/760443/visual-studio-2012-ide-loses-intellisense-and-reference-resolution

希望这对其他人有所帮助。

【讨论】:

  • 链接已过时
【解决方案2】:

我遇到了同样的错误,我注意到我新添加的模型名称是 abc.Models 而我的应用程序名称是 xyz 并且所有其他模型都在解决它在 xyz 命名空间中,所以我编辑了制造麻烦的模型并将其命名空间更改为 xyz.Models 并且有效:)

【讨论】:

    【解决方案3】:

    我的 Models 命名空间试图在 APPNameSpace.APPNameSpace.Models 下运行 Enable-Migrations 将这些类构建为 APPNameSpace.Models 所以我从每个类的开头删除了 APPNameSpace 并且它起作用了。

    【讨论】:

      【解决方案4】:

      老问题,但我在 .Net Core 3.1 项目中也有同样的问题。对我来说,在我的 _viewimports.cshtml 中导入是错误的:

      @using MyProject.Domain.Model
      @using MyProject.Domain.Common /* -- My bad namespace here -- */
      @using MyProject.Web.Configuration
      @using MyProject.Web.Areas.Shared.Utils
      @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
      

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。因为我将模型文件夹移动到了新创建的类库项目中。当我检查视图导入文件时,有模型文件夹的旧路径。我更新了路径,然后就解决了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-19
          • 1970-01-01
          • 2012-05-28
          • 1970-01-01
          • 1970-01-01
          • 2018-05-09
          • 2022-01-11
          相关资源
          最近更新 更多