Макрос __P()
обычно используется для поддержки реализаций C из дней K & amp; R C, когда не было прототипов (которые были введены на C с C89). В принципе логика
#if SOME_LOGIC_TO_TEST_WHETHER_IMPLEMENTATION_SUPPORTS_PROTOTYPES
# define __P(argument_list) argument_list
#else
# define __P(argument_list) ()
#endif
Вы можете видеть, как это работает при применении к вашему примеру? Обратите внимание, что для того, чтобы это работало и не вызывало синтаксическую ошибку, список аргументов должен включать круглые скобки функции функции , а не только круглые скобки функции , подобные функции . Следовательно, двойные скобки при использовании макроса. Вероятно, это причина, по которой это выглядит необычно.
Решение: установите Microsoft.AspNet.Webpages первый выпуск версии 2.0 с помощью менеджера nuget.
Я бы начал с рассмотрения сбоев привязки сборки - это покажет вам, какая сборка запрашивает отказ в привязке.
Существует удобный инструмент, который вы можете использовать для просмотра сбоев привязки. Это поможет вам отследить его.
https://msdn.microsoft.com/en-us/library/e74a18c4 (v = vs.71) .aspx
Удачи!
в моем случае ошибка была после развертывания, и проблема была ссылкой в файле web.config в подпапке этого сервера.
i устранить это, удалив его на этот компьютер и просматривая сайт локально (или вы можете включить удаленные ошибки в web.config)
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Поэтому не забудьте выполнить поиск во всех файлах для 2.0.0.0 или System.Web.WebPages.Razor, чтобы убедиться, что где-то нет ссылки!