使用Visual Studio 2012 RC的MVC 4 / Razor中的可移植类库

由于使用Visual Studio 2012 RC,因此在剃刀视图中使用可移植类库(.net 4.5&metroconfiguration文件)中的类时,会出现HttpCompileException。

例外:(德语翻译成英文,对不起)

System.Web.HttpCompileException (0x80004005): c:\Users\user\AppData\Local\Temp\Temporary ASP.NET Files\root\1995167a\126b7c4d\App_Web_index.cshtml.1fbcdbb1.zaniprm5.0.cs(29): error CS0012: The type 'System.Object' is not in a referenced assembly is defined. Add a reference to the Assembly "System.Runtime, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" added. at System.Web.Compilation.AssemblyBuilder.Compile() System.Web.Compilation.BuildProvidersCompiler.PerformBuild() System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) ... 

解决scheme结构

  • 可移植类库(.net 4.5&metro profile)
    • 公共类User {…}
  • MVC 4(.net 4.5)
    • 对可移植类库的引用
    • 剃刀 – 视图
      • @model用户

由于Visual Studio 2012 RC添加引用“System.Runtime”不再是可能的。

在Views \ Web.config文件中,在<system.web>部分下添加以下代码:

 <compilation debug="true" targetFramework="4.5"> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> </compilation> 

还有一些其他程序集可能还需要引用,具体取决于您的便携式代码使用的是什么types。 您可以在遇到错误时添加每个程序集,也可以在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades添加程序集的完整列表。