Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Portable Class Library in MVC 4 / Razor with Visual Studio 2012 RC?

since working with Visual Studio 2012 RC we get an HttpCompileException when using a class out of an portable class library (.net 4.5 & metro profile) within a razor view.

Exception: (german to english translated on google, sorry)

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)
...

Solution structure:

  • Portable Class Library (.net 4.5 & metro profile)
    • public class User { ... }
  • MVC 4 (.net 4.5)
    • Reference to Portable Class Library
    • Razor-View
      • @model User

Since Visual Studio 2012 RC adding reference "System.Runtime" is not possible any more.

like image 687
BPeter Avatar asked Jun 05 '12 12:06

BPeter


1 Answers

In the Views\Web.config file, add the following code under the <system.web> section:

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

There are a bunch of other assemblies you may also need to reference, depending on what types your portable code is using. You can either add each one as you encounter the error, or add the full list of assemblies in C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades.

like image 153
Daniel Plaisted Avatar answered Oct 20 '22 19:10

Daniel Plaisted