Не може да се разрешат сборки, които използват преносими библиотеки от класове

Имам проблем с разделителната способност на асемблиране на машина на краен потребител и смятам, че е свързан с използването на Portable Class Libraries....

Имам приложение .NET 4.0, което първоначално беше написано във Visual Studio 2010. Наскоро надстроихме до Visual Studio 2012 и създадохме няколко проекта, които са преносими библиотеки от класове. Не вярвам, че имаме нужда от тези функции сега, но също така създаваме приложение за Windows 8 Store, което може да се възползва от тези библиотеки.

Когато компилирам моя проект, какво точно прави функцията за преносима библиотека? Очаквам, че ми позволява да го стартирам на различни рамки без модификация или прекомпилиране.

Когато гледам библиотеката в reflector dotPeek, тя показва атрибута Platform като:

.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...“

Googleing 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. Краен изстрел: приложенията на магазина изискват .NET 4.5. Внимавайте за клиентския профил на 4.0   -  person Hans Passant    schedule 14.12.2012


Отговори (1)


За .NET 4 се нуждаете от актуализация (KB2468871) за Portable Class Libraries да работиш. От статията от БЗ:

Функция 5

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

Вижте също раздела „Внедряване на приложение .NET Framework“ в документацията на MSDN Portable Class Library.

РЕДАКТИРАНЕ: Всъщност, ако машината има инсталиран .NET 4.0.3, както споменахте, това трябва да е достатъчно. Можете ли да проверите отново, за да се уверите, че наистина е инсталиран?

person Daniel Plaisted    schedule 14.12.2012
comment
Много странно. Изтеглих microsoft.com/en-us/download/details. aspx?id=29053 (KB2600211, публикувано на 03/04/12), но когато изпълних, каза, че е блокиран или вече е инсталиран. Изтеглих KB2468871 (публикуван на 6/08/11) и успях да инсталирам без проблем. Приложението вече работи. - person bryanbcook; 14.12.2012
comment
Все още получавам тази грешка и при двете актуализации, че не се отнася за вашата система. Това е с VS 2012. Въздишка. - person Mark Sowul; 17.06.2013
comment
Изглежда, че компилаторът има някои проблеми с PCL за моя проблем: 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