Невозможно разрешить сборки, использующие переносимые библиотеки классов

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

У меня есть приложение .NET 4.0, которое изначально было написано в Visual Studio 2010. Недавно мы обновились до Visual Studio 2012 и создали несколько проектов, которые являются переносимыми библиотеками классов. Я не думаю, что нам нужны эти функции сейчас, но мы также создаем приложение для Магазина Windows 8, которое могло бы извлечь выгоду из этих библиотек.

Когда я компилирую свой проект, что именно делает функция переносимой библиотеки? Я ожидаю, что это позволит мне запускать его на разных платформах без модификации или перекомпиляции.

Когда я смотрю на библиотеку в reflector dotPeek, атрибут платформы отображается как:

.NETPortable, версия = v4.0, профиль = профиль 5

И ссылки кажутся 2.0-ish:

mscorlib, версия = 2.0.5.0

Система, Версия=2.0.5.0

System.Runtime.Serialization, версия = 2.0.5.0

Когда я запускаю приложение на компьютере этого конечного пользователя, я вижу ошибку в файле журнала:

Не удалось загрузить файл или сборку, "System.Core, Version=2.0.5.0..."

Поиск в Google System.Core 2.0.5.0, похоже, относится к SilverLight, который, по-видимому, является одной из целевых платформ.

На этом компьютере не установлена ​​Visual Studio, но установлена ​​.NET 4.0 (обновление 4.0.3).

Есть ли что-то, что я должен делать по-другому для компиляции, что-то, что я должен исследовать в своих зависимостях, или что-то, что я должен искать для установки на машине конечного пользователя? К чему относится 2.0.5.0?


person bryanbcook    schedule 14.12.2012    source источник
comment
2.0.5.0 — целевая версия для PCL, она переназначается фреймворком. Profile5 = Framework 4.0 и Store. Общий план: для приложений Store требуется .NET 4.5. Следите за профилем клиента версии 4.0   -  person Hans Passant    schedule 14.12.2012


Ответы (1)


Для .NET 4 требуется обновление (KB2468871) для переносимых библиотек классов. работать. Из статьи базы знаний:

Функция 5

Изменения в поддержке переносимых библиотек. Эти изменения включают обновления API и модификации связующего. Это обновление позволяет среде CLR успешно связываться с переносимыми библиотеками, чтобы одна библиотека DLL могла работать в .NET Framework 4, Silverlight, Xbox или Windows Phone. Это обновление добавляет общедоступные API-интерфейсы Silverlight в .NET Framework 4 в том же расположении. Подписи API останутся согласованными на всей платформе. Все модификации на 100 процентов совместимы и не нарушают существующий код.

См. также раздел «Развертывание приложения .NET Framework» в документации MSDN Portable Class Library.

EDIT: На самом деле, если на машине установлен .NET 4.0.3, как вы упомянули, этого должно быть достаточно. Можете ли вы перепроверить, чтобы убедиться, что он действительно установлен?

person Daniel Plaisted    schedule 14.12.2012
comment
Очень странно. Я скачал microsoft.com/en-us/download/details. aspx?id=29053 (KB2600211 опубликовано 04.03.12), но когда я запустил его, он сказал, что он заблокирован или уже установлен. Я скачал KB2468871 (опубликовано 08.06.11) и смог установить без проблем. Приложение теперь работает. - person bryanbcook; 14.12.2012
comment
Я все еще получаю эту ошибку, когда оба обновления говорят, что это не относится к вашей системе. Это с VS 2012. Вздох. - person Mark Sowul; 17.06.2013
comment
Похоже, у компилятора есть некоторые сбои с PCL, для моей проблемы: not-set-to-an-instance-of-an-object-sometimes-for-mvvm" rel="nofollow noreferrer">connect.microsoft.com/VisualStudio/feedback/details/780023/, connect.microsoft. com/VisualStudio/feedback/details/779370/ - person Mark Sowul; 17.06.2013
comment
У нас была машина с установленной .NET 4.0.3, и мы все еще сталкивались с этой ошибкой. Установка KB2468871 исправила это. - person Oran Dennison; 14.08.2014
comment
KB2468871 не применяется к Windows 8 или 8.1, однако я вижу эту проблему во время компиляции проекта VS на компьютере с Windows 8.1. - person RJ Cuthbertson; 17.07.2015
comment
Все еще проблема ... Новый компьютер с Windows 10, установлен .NET 4.8, ссылки на System.Core.2.0.5 не разрешаются - KB2468871 заблокирован, все попытки установить .Net 4.0 также заблокированы .... Мертвый в вода. - person David V. Corbin; 18.02.2021