Ошибки компиляции с ImageResizer 3.2.1

После разрешения Nuget обновить ImageResizer 3.1.5 до версии 3.2.1 мои компиляции завершаются ошибкой с несколькими ошибками (все одного типа):

Error 5 Missing compiler required member 'System.Runtime.CompilerServices.ExtensionAttribute..ctor'

Видимо, это является результатом несоответствия версии сборки. Удаление всех ссылок ImageResizer в проекте позволяет безошибочную компиляцию.

Возврат к ImageResizer 3.1.5 также позволяет выполнить успешную компиляцию.

Мой проект - простое приложение MVC3, нацеленное на.NET4 - оба ImageResizer 3.1.5 и 3.2.1 нацелены на v2.0.50727

Любые идеи о том, как это можно исправить?

Спасибо в ожидании!

1 ответ

Обновление (20 июня 2012 г.): лучшее решение для проекта - откатить поддержку метода расширения. ImageResizer 3.2.2 больше не будет предлагать методы расширения, но некоторые функции будут дублироваться в классах ResizeSettings и Instructions, чтобы минимизировать поломку для тех, кто уже закодировал новые API-интерфейсы альфа.

ImageResizer V4, скорее всего, потребует.NET 3.5 и вновь представит недостающие функции.


Обновление: см. Этот вопрос, если у вас есть какие-либо решения этой проблемы.

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

Обходной путь A:

В обозревателе решений разверните папку "Ссылки" в своем проекте, выберите ImageResizer и перейдите в "Свойства". Измените поле Aliases с "global" на "ir".

Обходной путь B:

Настройте ваш проект на использование.NET 2.0, сохраните, а затем верните его обратно к использованию.NET 3.5 или.NET 4.

Обходной путь C:

Вручную удалите ссылку на System.Core и добавьте верную. (Обычный виновник - модернизированный проект со ссылкой на System.Core 3.0 в проекте 3.5). В ASP.NET вы можете сделать это в web.config.

Обходной путь D:

Вернитесь к 3.2.0, но только если вы используете C#.

Почему это происходит

VisualStudio/MSBuild найти несколько определений System.Runtime.CompilerServices.ExtensionAttribute в проекте во время компиляции, но вместо выбора public копия, определенная в System.Core, компилятор решает использовать internal, сборка-локальная копия, определенная в ImageResizer.dll. Затем он жалуется, потому что другие сборки не могут добраться до него. Бессмысленные.

Что должно произойти

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

Общественный против Внутреннего

V2.3.0 определил ExtensionAttribute какpublicвместоinternal, Это вызвало ошибку таймера компиляции в проектах VB, но не в проектах C#. Я сразу выпустил 2.3.1 с пометкой internal, но сейчас я вижу проблемы с проектами C#. Поймать-22 здесь.

Это работает для других людей... и Microsoft!Почему я?

http://www.danielmoth.com/Blog/Using-Extension-Methods-In-Fx-20-Projects.aspx

http://www.codethinked.com/using-extension-methods-in-net-20

http://kohari.org/2008/04/04/extension-methods-in-net-20/

Использование методов расширения в.NET 2.0?

"Взлом" был даже показан в журнале MSDN.

Как ты можешь помочь

Мне нужно больше данных, чтобы полностью понять это. Если у вас возникла проблема, отправьте файл.zip проекта по электронной почте на адрес support@imageresizing.netи включите номера версий VisualStudio/.NET (перейдите в раздел Visual Studio, Справка, О программе и нажмите Copy Info, а затем вставьте его в электронное письмо).

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

Обновление - только что нашел эту статью, которая подразумевает, что единственным решением является создание нескольких версий сборки. Но Microsoft не сделала! Что мне не хватает? Кроме того, NuGet не поддерживает версии 2.0 против 3.5, поэтому, если я не смогу найти решение для одной сборки, мне, возможно, придется отказаться от поддержки 2.0.

Другие вопросы по тегам