Вы должны добавить ссылку в System.Runtime при развертывании на веб-сайтах Azure.

Сайт работает нормально локально, но выкидывает это из среды хостинга веб-сайтов Windows Azure.

CS0012: тип System.Object определен в сборке, на которую нет ссылки. Вы должны добавить ссылку на сборку System.Runtime, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a.

Итак, это печально известное сообщение и известное исправление;

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

Я понимаю, что страницы / представления ASP.NET компилируются в другое время для контроллеров и другой логики (что vNext, наконец, собирается решить эту проблему), и что вышеупомянутое добавляет ссылку для стороны компиляции страницы.

Но у меня вопрос: почему это работает на моей машине разработки, но нужна дополнительная конфигурация в среде WAWS, которая, как вы думаете, была настроена идеально?

Я хотел бы знать, что отличается, чего не хватает в целевой среде, например, ссылка на портативную библиотеку (переносимую, что означает, что она должна «просто работать» в различных средах) на самом деле нарушает работу.

Более того, почему, когда я ссылаюсь на PCL, System.Object внезапно не обнаруживается в Mscorlib. Когда-то я все это понимал, а потом все запуталось.


person Luke Puplett    schedule 05.12.2014    source источник
comment
вы добавили using в начало класса .cs для конкретной сборки / ссылки ..   -  person MethodMan    schedule 05.12.2014
comment
@DJKRAZE: эта ошибка не имеет ничего общего с пространствами имен.   -  person SLaks    schedule 05.12.2014
comment
в какой версии собственно построен проект в 4.5 ..? также погуглите точную ошибку для некоторых дополнительных ссылок на другие, которые имели ту же ошибку lyalin.com/2014/04/25/   -  person MethodMan    schedule 05.12.2014
comment
Вы говорите, что ваш локальный компьютер не требует этого исправления, я предполагаю, что вы имеете в виду web.config. Но если вы посмотрите в свой machine.config, есть ли там эта конфигурация?   -  person mason    schedule 05.12.2014
comment
@mason Это была хорошая идея, но нет. Его там нет. Локально System.Runtime in - это GAC, и я думаю, поэтому это не проблема локально. Но что это там?   -  person Luke Puplett    schedule 06.12.2014
comment
Проверить версию платформы веб-приложения, настроенную на портале?   -  person andryuha    schedule 18.06.2015


Ответы (1)


PCL ссылается на system.runtime.dll, а не на mscorlib.dll, и когда asp.net компилирует вашу страницу просмотра, он не добавляет ссылку на system.runtime.dll. В вашем случае компилятор C # выдает ошибку. Но не уверен, почему проблема возникает только в среде WAWS.

person mattfei    schedule 03.09.2015