Вопрос по c#, asp.net – Портативная библиотека классов в MVC 4 / Razor с Visual Studio 2012 RC?

40

начиная с работы с Visual Studio 2012 RC мы получаем исключение HttpCompileException при использовании класса из переносимой библиотеки классов (.net 4.5 и профиль метро) в виде бритвы.

Исключение: (немецкий переводится на английский, извините)

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

Структура решения:

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

Начиная с Visual Studio 2012 RC добавлена ссылка «System.Runtime» больше не возможно

В качестве обходного пути, можете ли вы изменить переносимую библиотеку классов на Silverlight 5 в дополнение к .NET 4.5 и Metro style? Daniel Plaisted

Ваш Ответ

1   ответ
60

В файле 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>

Существует множество других сборок, на которые вы также можете ссылаться, в зависимости от того, какие типы использует ваш переносимый код. Вы можете добавить каждый из них при возникновении ошибки или добавить полный список сборок вC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades.

Почему это работает?
В зависимости от того, что вы делаете в своем проекте, вам также может понадобиться добавить ту же самую строку в кореньWeb.Config
Это решило аналогичную проблему для меня с помощью System.Collections.Immutable
@WetNoodles Спасибо. Забавно, если вы перейдете по ссылке в блоге обратно на мой вопрос.
@ LukePuplett вроде как поздно, но вот хорошее объяснениеlyalin.com/2014/04/25/…

Похожие вопросы