Компиляция преобразования: тип «Объект» определен в сборке, на которую нет ссылок

Я вношу некоторые изменения в веб-приложение asp.Net MVC5, в котором я использовал typelite для создания определений .ts из классов C# (действительно удобно). По какой-то причине теперь у меня есть эта ошибка при выполнении T4:

Компиляция преобразования: Тип «Объект» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «mscorlib, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes».

и это предупреждение:

Преобразование компиляции: предполагается, что ссылка на сборку «mscorlib, версия = 1.0.3300.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089», используемая «EnvDTE», соответствует идентичности «mscorlib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089» из «mscorlib ', вам может потребоваться указать политику времени выполнения Mair.Tracking.Web.

Я предполагаю, что это связано с версией EnvDTE, используемой TypeLite, и ссылкой на mscorlib, которую использует EnvDTE. Должен ли я добавить bindingRedirect в web.config?

Я использую VS2015 с Update2 CTP.


person qwertoyo    schedule 15.02.2016    source источник
comment
Я не использую typelite, но также получаю предупреждение mscorlib, так как обновил VS2015 до CTP 2.   -  person Akinzekeel    schedule 19.02.2016
comment
Я нашел ваш вопрос и читал, думая, идеально - точно такая же ситуация, как и у меня, вплоть до версии VS2015 и т. Д. Потом печаль, когда я не вижу ответа. Я предполагаю, что это обновление 2 CTP виновато. Я собираюсь установить Update 2 RC через несколько часов, поэтому отчитаюсь с ответом, если это поможет.   -  person Ian Yates    schedule 08.03.2016
comment
спасибо, Ян, не знал, что Update2 RC уже вышел   -  person qwertoyo    schedule 08.03.2016
comment
У меня такая же проблема с обновлением 2 RC :( Есть предложения?   -  person Zarkos    schedule 08.03.2016
comment
Обновил до Update 2 RC, та же ошибка   -  person qwertoyo    schedule 08.03.2016
comment
Это позор. Я не дошел до релиза RC, так как что-то мешало, но я все же попытаюсь установить его позже. Я предполагаю, что где-то в работе есть ссылка на сборку, и необходимо добавить/удалить или обновить перенаправление привязки.   -  person Ian Yates    schedule 09.03.2016
comment
Для этого я открыл элемент Connect: connect.microsoft.com/VisualStudio/feedback/ детали/2451005   -  person Ian Yates    schedule 09.03.2016
comment
Та же проблема в обновлении 2 RTM. И, кстати, мой файл .tt не имеет доступа ни к каким внешним библиотекам сторонних разработчиков и не предназначен для PCL, это просто стандартный шаблон T4, который не делает ничего особенного, просто использует EnvDTE (это сборка, которую я .tt файл жалуется).   -  person Fred    schedule 04.04.2016
comment
Я получил это сообщение как предупреждение, а не как ошибку в VS2015 в проекте WPF с первой моделью базы данных. Любопытно то, что когда он появился только тогда, когда я добавил поле в БД, а затем обновил таблицу в дизайнере моделей. Не вылетало, может кому поможет.   -  person ThrowingDwarf    schedule 21.04.2016
comment
@ThrowingDwarf Я тоже получил это на [всех] моих edmx. Но просто предупреждение, преобразование T4 работает правильно.   -  person qwertoyo    schedule 23.04.2016
comment
Мне пришлось обновить свои источники данных, и мне пришлось обновить модель, и она была исправлена, с ней не было никаких проблем, добавленные поля работают так, как должны.   -  person ThrowingDwarf    schedule 25.04.2016


Ответы (5)


Я могу подтвердить, что переносимые библиотеки классов в сочетании с шаблонами T4 вызывают эту проблему в Visual Studio 2015 Update 2. Мне не удалось найти лучшего решения, чем перенацелить TypeLITE на полную платформу .NET.

Начиная с версии 1.8.0 пакет nuget TypeLITE содержит копию библиотеки, предназначенной для полной платформы .NET. Если ваш проект нацелен на полную платформу .NET, правильная сборка TypeLITE подбирается во время установки, и все работает нормально в Visual Studio 2015 Update 2. К сожалению, если ваш проект нацелен на PCL, вам не повезло с Visual Studio 2015 Update 2. Я ищет лучшее решение.

person Lukas Kabrt    schedule 03.04.2016
comment
@mythz также должен быть уведомлен об этом для ServiceStack. - person James Gray; 20.04.2016
comment
Попробуйте установить KB3151378 для VS 2015 Update 2. - person SvenAelterman; 13.05.2016
comment
Я столкнулся с этой проблемой в приложении .NET Core 3.1 в VS 2019 Preview 2. Кто-нибудь нашел реальное решение? - person tig; 04.03.2020

Спасибо Ian Yates за открытие элемента Connect.

Microsoft повторно выпустила KB3151378 4 мая 2016 г. Я могу подтвердить, что это обновление устраняет проблему, когда шаблоны T4 используются с файлами EDMX. К сожалению, я не использую TypeLite, поэтому я не могу подтвердить, что он решает проблему OP, хотя я подозреваю, что это так.

Со страницы базы знаний:

Проблема 6:

В шаблонах T4 ошибки возникают, когда вы ссылаетесь на сборку, созданную для версии .NET Framework, которая отличается от настольной (полной) платформы. Например, ошибки возникают, когда вы ссылаетесь на переносимые библиотеки.

person SvenAelterman    schedule 11.05.2016

Похоже, это должно быть исправлено KB3151378.

Примечания для версии 14.0.25130.0:

Проблема 6

В шаблонах T4 ошибки возникают, когда вы ссылаетесь на сборку, созданную для версии .NET Framework, которая отличается от настольной (полной) платформы. Например, ошибки возникают, когда вы ссылаетесь на переносимые библиотеки.

person StriplingWarrior    schedule 27.05.2016

Специально для TypeLite я открыл свою копию (довольно устаревшую, но я настроил ее в соответствии со своими потребностями) и перестал быть переносимой библиотекой. Это было сделано в соответствии с инструкциями на странице https://stackoverflow.com/a/23135170/1053381. Теперь, когда это не переносимая библиотека, я могу снова выполнить свой шаблон T4.

У меня есть много других шаблонов T4 в моем решении, использующем ImmutableObjectGraph (поиск на GitHub), и они работали нормально, несмотря на то, что он также использует переносимую библиотеку. Я не слишком углублялся в подробности, но узнал, что mscorlib 2.0.5.0 связан с переносимыми библиотеками и т. д., и на самом деле нам не нужно, чтобы сам TypeLite был переносимым.

Надеюсь, это поможет другим.

Также существует открытая проблема с подключением по адресу https://blogs.msdn.microsoft.com/visualstudio/2016/03/03/visual-studio-2015-update-2-rc/, так как это все еще регрессия в VS2015 Update 2.

person Ian Yates    schedule 09.03.2016
comment
Спасибо! Это сработало для меня (предупреждение все еще присутствует, но ошибка исчезла, и она работает успешно). Для других людей, которые идут этим путем, вы можете загрузить последнюю версию TypeLite отсюда: bitbucket.org/LukasKabrt/ typelite/загрузки. Мне нужно было преобразовать только один проект, и он назывался TypeLite.Net4. Другой TypeLite уже был библиотекой классов. Последним шагом было удаление пакета nuget TypeLite из вашего проекта и добавление ссылки на эти недавно скомпилированные библиотеки DLL. - person Augusto Barreto; 31.03.2016
comment
Рад, что помог кому-то еще :) - person Ian Yates; 31.03.2016

У меня была установлена ​​полная версия TypeLite 1.5.1 (Regular WebApplication .Net Full version 4.5.1), и простое обновление до 1.8.1 помогло решить проблему. Поэтому я должен сказать, что VS 2015 Update2 RC и Update2 RTM не работают ни с ПОЛНОЙ версией TypeLite, ни с PORTABLE (да, версия 1.5.1 уже имеет портативную версию)

person SerjG    schedule 12.04.2016