Ошибка при использовании дополнительных методов в C#

57
задан royhowie 15 November 2014 в 19:47
поделиться

11 ответов

Я просто столкнулся с этой проблемой сам. В моем случае это было, потому что я преобразовал проект VS 2005/.Net 2.0 в проект VS 2008/.Net 3.5. Инструмент преобразования сохранил ссылки на Систему. Базовые 2.0, и я не мог найти простой способ изменить ссылки на Систему. Базовые 3.5.

я закончил тем, что воссоздал проект в VS 2008 с нуля, и это было создано с надлежащими ссылками на Систему. Ядро 3.5

20
ответ дан abelenky 24 November 2019 в 19:25
поделиться

Попытка: Проект, Добавляет Ссылка, находит Системное Ядро 3.5.0.0 в списке, и хорошо добавить его.

0
ответ дан 24 November 2019 в 19:25
поделиться

Действительно ли это - проект веб-сайта, случайно? Попытайтесь изменить целевую платформу от.NET 3.5 к более ранней версии, и затем обратно к.NET 3.5.

0
ответ дан Gabriel Isenberg 24 November 2019 в 19:25
поделиться

Расширения представлены в C# 3.0, который, с другой стороны, был представлен в.NET 3.5, таким образом, Вы не можете действительно использовать их в.NET 3.0 непосредственно.

0
ответ дан Tamas Czinege 24 November 2019 в 19:25
поделиться

Недостающая Система. Базовая ссылка даст эти признаки.

2
ответ дан jyoung 24 November 2019 в 19:25
поделиться

Для какой версии.NET Вы нацелены? Класс ExtensionAttribute поставляется в System.Core.dll (.NET 3.5), но можно повторно объявить его сами, если Вы хотите использовать дополнительные методы в.NET 2.0/3.0 (с C# 3.0, очевидно). На самом деле LINQBridge делает это.

[обновление] Однако я немного смущен, потому что ошибка, Вы должны , видит:

Ошибка 1 не Может определить новый дополнительный метод, потому что компилятор потребовал типа 'Система. Время выполнения. CompilerServices. ExtensionAttribute' не может быть найден. Вы пропускаете ссылку на System.Core.dll? [отрезанный некоторый материал пути]

3
ответ дан Marc Gravell 24 November 2019 в 19:25
поделиться

Ваша платформа не достаточно высока для Дополнительных Методов.
Это взлом для того, чтобы заставить дополнительные методы работать, не будучи в 3,5

5
ответ дан Tom Ritter 24 November 2019 в 19:25
поделиться

в VS нажмите Project (рядом с Файлом, Редактированием, Представлением), выберите Свойства

тогда на вкладке Application (Вы заметите, что уже находитесь в 3,5), выберите Целевую Платформу к 2,0, затем скомпилируйте (это будет ошибка). тогда отложите его снова к 3,5, затем скомпилируйте снова, ошибка исчезнет

, я думаю, что это - просто маленький незначительный сбой в Visual Studio, просто одурачьте IDE:-)

17
ответ дан Michael Buen 24 November 2019 в 19:25
поделиться

Эта проблема действительно вызывается неправильной ссылкой к версии 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>
1
ответ дан lexx 24 November 2019 в 19:25
поделиться

У меня был такой же выпуск в проекте библиотеки классов, который я обновил с VS 2008 до VS 2010 Beta 2. Методы расширения я не добавлял в проект до тех пор, пока после апгрейда не обнаружил такую же ошибку.

Добавление в проект класса со следующим кодом решило проблему:

namespace System.Runtime.CompilerServices
{
    public class ExtensionAttribute : Attribute { }
}

Нашел подсказку в этом блоге: http://blog.flexforcefive.com/?p=105

16
ответ дан 24 November 2019 в 19:25
поделиться

У меня такая же проблема. Ошибка System.runtime.comPilerservices.extensionAttribute..Tor довольно загадочный, и может означать ряд разных вещей.

Однако для меня это сводится к тому, что я использую NewTonsoft.json.net . Я удалил ссылку на файл newTonsoft.json.net20.dll , а повторное добавление. После этого мое решение снова строит.

Самым странным тому, что когда я пытался выяснить, что отличалось после этой процедуры, используя Subversion Diff, ничто не изменилось.

Итак, я действительно не знаю, что действительно делает удаление и повторное добавление этой ссылки, но это исправить мою проблему сборки с помощью этого конкретного сообщения об ошибке, упомянутой Азерниром.

Обновление 1 :

Для тех, кто поступает в это снова, поскольку комистаторы указали, правильный способ исправить это в загрузки ZIP JSON.NET , и должно быть Версия 3.5, Re-ссылка 3.5 каждый, где вы используете JSON.NET и удалите старую ссылку, так как это, скорее всего, ссылается на сборку, которая была построена для более старых версий .NET.

Обновление 2 :

Цветы Чарли Указывает, что этикетки DLL NewTonsoft для 3,5 на самом деле не собираются работать с 3.5. Вы должны использовать DLL они этикетки как для .NET 2.0

73
ответ дан 24 November 2019 в 19:25
поделиться
Другие вопросы по тегам:

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