2012-06-05 4 views
40

Seit der Arbeit mit Visual Studio 2012 RC erhalten wir eine HttpCompileException, wenn eine Klasse aus einer portablen Klassenbibliothek (.net 4.5 & Metro-Profil) in einer Rasiereransicht verwendet wird.Portable Klassenbibliothek in MVC 4/Razor mit Visual Studio 2012 RC?

Ausnahme: (Deutsch auf Englisch auf Google übersetzt, 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) 
... 

Lösungsstruktur:

  • Portable Klassenbibliothek (.net 4.5 & U-Bahn-Profil)
    • public class User {0}
  • MVC 4 (.net 4.5)
    • Verweis auf Portable Klassenbibliothek
    • Razor-View
      • @model Benutzer

Seit Visual Studio 2012 RC Zusatz Referenz „System. Runtime "ist nicht mehr möglich.

+1

Als Workaround können Sie die portable Klassenbibliothek ändern, um zusätzlich zu .NET 4.5 und Metro style Silverlight 5 zu verwenden? –

Antwort

60

Im Views \ Web.config-Datei, fügen Sie den folgenden Code unter dem <system.web> Abschnitt:

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

Es gibt eine Reihe von anderen Baugruppen Sie verweisen müssen, je nachdem, welche Arten Ihre portablen Code benutzt. Sie können sie entweder hinzufügen, wenn Sie auf den Fehler stoßen, oder die vollständige Liste der Assemblys in C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades hinzufügen.

+16

Warum funktioniert das? –

+2

Dies löste ein ähnliches Problem für mich mit System.Collections.Immutable – aboy021

+0

Abhängig davon, was Sie in Ihrem Projekt tun, müssen Sie möglicherweise auch die gleiche Zeile zu dem Stamm 'Web.Config' – joshcomley