Я просто столкнулся с этой проблемой сам. В моем случае это было, потому что я преобразовал проект VS 2005/.Net 2.0 в проект VS 2008/.Net 3.5. Инструмент преобразования сохранил ссылки на Систему. Базовые 2.0, и я не мог найти простой способ изменить ссылки на Систему. Базовые 3.5.
я закончил тем, что воссоздал проект в VS 2008 с нуля, и это было создано с надлежащими ссылками на Систему. Ядро 3.5
Попытка: Проект, Добавляет Ссылка, находит Системное Ядро 3.5.0.0 в списке, и хорошо добавить его.
Действительно ли это - проект веб-сайта, случайно? Попытайтесь изменить целевую платформу от.NET 3.5 к более ранней версии, и затем обратно к.NET 3.5.
Расширения представлены в C# 3.0, который, с другой стороны, был представлен в.NET 3.5, таким образом, Вы не можете действительно использовать их в.NET 3.0 непосредственно.
Недостающая Система. Базовая ссылка даст эти признаки.
Для какой версии.NET Вы нацелены? Класс ExtensionAttribute поставляется в System.Core.dll (.NET 3.5), но можно повторно объявить его сами, если Вы хотите использовать дополнительные методы в.NET 2.0/3.0 (с C# 3.0, очевидно). На самом деле LINQBridge делает это.
[обновление] Однако я немного смущен, потому что ошибка, Вы должны , видит:
Ошибка 1 не Может определить новый дополнительный метод, потому что компилятор потребовал типа 'Система. Время выполнения. CompilerServices. ExtensionAttribute' не может быть найден. Вы пропускаете ссылку на System.Core.dll? [отрезанный некоторый материал пути]
Ваша платформа не достаточно высока для Дополнительных Методов.
Это взлом для того, чтобы заставить дополнительные методы работать, не будучи в 3,5
в VS нажмите Project (рядом с Файлом, Редактированием, Представлением), выберите Свойства
тогда на вкладке Application (Вы заметите, что уже находитесь в 3,5), выберите Целевую Платформу к 2,0, затем скомпилируйте (это будет ошибка). тогда отложите его снова к 3,5, затем скомпилируйте снова, ошибка исчезнет
, я думаю, что это - просто маленький незначительный сбой в Visual Studio, просто одурачьте IDE:-)
Эта проблема действительно вызывается неправильной ссылкой к версии 2 Системы. Ядро. Это обычно вызывается при обновлении от более ранней версии.NET к.NET 3.5. Если это - веб-сайт, в котором Вы испытываете эту проблему затем, это может быть исправлено путем выполнения шагов ниже:
1) В web.config добавляют ссылку на Систему. Ядро v3.5:
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
2) В web.config добавляют следующее как ребенка конфигурации:
<configuration>
<!--Some other config-->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Core" publicKeyToken="B77A5C561934E089"/>
<bindingRedirect oldVersion="2.0.0.0-2.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</configuration>
У меня был такой же выпуск в проекте библиотеки классов, который я обновил с VS 2008 до VS 2010 Beta 2. Методы расширения я не добавлял в проект до тех пор, пока после апгрейда не обнаружил такую же ошибку.
Добавление в проект класса со следующим кодом решило проблему:
namespace System.Runtime.CompilerServices
{
public class ExtensionAttribute : Attribute { }
}
Нашел подсказку в этом блоге: http://blog.flexforcefive.com/?p=105
У меня такая же проблема. Ошибка System.runtime.comPilerservices.extensionAttribute..Tor
довольно загадочный, и может означать ряд разных вещей.
Однако для меня это сводится к тому, что я использую NewTonsoft.json.net
. Я удалил ссылку на файл newTonsoft.json.net20.dll
, а повторное добавление. После этого мое решение снова строит.
Самым странным тому, что когда я пытался выяснить, что отличалось после этой процедуры, используя Subversion Diff, ничто не изменилось.
Итак, я действительно не знаю, что действительно делает удаление и повторное добавление этой ссылки, но это исправить мою проблему сборки с помощью этого конкретного сообщения об ошибке, упомянутой Азерниром.
Для тех, кто поступает в это снова, поскольку комистаторы указали, правильный способ исправить это в загрузки ZIP JSON.NET , и должно быть Версия 3.5, Re-ссылка 3.5 каждый, где вы используете JSON.NET и удалите старую ссылку, так как это, скорее всего, ссылается на сборку, которая была построена для более старых версий .NET.
Цветы Чарли Указывает, что этикетки DLL NewTonsoft для 3,5 на самом деле не собираются работать с 3.5. Вы должны использовать DLL они этикетки как для .NET 2.0