C# 编译错误,缺少Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint

C# 编译错误,缺少Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint,c#,asp.net-mvc,entity-framework,azure,azure-web-roles,C#,Asp.net Mvc,Entity Framework,Azure,Azure Web Roles,我正在尝试扩展默认的webrole模板。我添加了一个新的实体模型,并为其创建了一个框架。尝试加载索引页时,将显示服务器错误 在未引用的程序集中定义了类型“Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint”。必须添加对程序集“Microsoft.WindowsAzure.ServiceRuntime,版本=2.3.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”的引用 我仔细检查了WebRole是否包含此

我正在尝试扩展默认的webrole模板。我添加了一个新的实体模型,并为其创建了一个框架。尝试加载索引页时,将显示服务器错误

在未引用的程序集中定义了类型“Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint”。必须添加对程序集“Microsoft.WindowsAzure.ServiceRuntime,版本=2.3.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”的引用

我仔细检查了WebRole是否包含此引用,它确实包含。我可以通过将此引用副本本地属性设置为true来修复此错误

如果执行此操作,错误将更改为“类型名称'Models'在类型'WebRole.WebRole'中不存在”

这两个错误都是从Index.cshtml文件抛出的,特别是在以下行:

公共类(页面)视图(银行账户)索引(cshtml):
System.Web.Mvc.WebViewPage{


什么原因导致这种情况?

视图编译中缺少引用

视图编译器使用一组不同的引用,要使模型正常工作,需要在web.config中添加引用

例如:

<configuration>
  <system.web>
    <assemblies>
      <add assembly="YourAssembly, Version=4.0.0.0, Culture=neutral, PublicKeyToken=TOKENKEY" />
    </assemblies>
  </system.web>
 </configuration>

我知道它很旧,但可能会帮助其他人

出现此错误的原因是,当使用名称WebRole创建web项目时,Windows Azure云服务的默认项目中存在冲突(该名称将该项目与Microsoft.WindowsAzure.ServiceRuntime dll放在同一命名空间中)。 要解决此问题,有两个简单的选项:

替换此代码

@model WebRole.Models.RegisterViewModel
并添加using语句和不带namesapce的模型

@using WebRole.Models
@model RegisterViewModel
或者,可以在views文件夹内的web.config中添加名称空间(而不是根目录中的名称空间)


希望有帮助。

您是否安装了Azure Tools的正确版本?我知道,我只有在缺少Azure Tools库时才会出现此错误。

谢谢,您让我走上了正确的道路。默认模板创建了名称空间WebRole和一个名为WebRole的类。该视图混淆了WebRole.Models作为t的属性类,而不是程序集中的类。通过将BankAccount移动到另一个命名空间,找到了引用。感谢您的帮助
<pages pageBaseType="System.Web.Mvc.WebViewPage">
   <namespaces>
       -----
      <add namespace="WebRole.Models" />
   </namespaces>
</pages>
@model RegisterViewModel