Невозможно разрешить сборки, которые используют библиотеки Portable Class
У меня возникла проблема с разрешением сборки на конечной машине, и я считаю, что это связано с использованием переносных классов классов....
У меня есть приложение .NET 4.0, которое изначально было написано в Visual Studio 2010. Недавно мы обновились до Visual Studio 2012, и мы создали несколько проектов, которые являются портативными библиотеками классов. Я не считаю, что нам нужны эти функции сейчас, но мы также создаем приложение Windows 8 Store, которое может извлечь выгоду из этих библиотек.
Когда я компилирую свой проект, что именно делает портативная библиотека? Я ожидаю, что он позволяет мне запускать его на разных платформах без изменения или перекомпиляции.
Когда я смотрю на библиотеку в отражателе dotPeek, он показывает атрибут платформы как:
.NETPortable, Version = v4.0, профиль = Profile5
И ссылки кажутся 2.0-иш:
mscorlib, Version = 2.0.5.0
Система, версия = 2.0.5.0
System.Runtime.Serialization, Version = 2.0.5.0
Когда я запускаю приложение на этой машине конечного пользователя, я вижу ошибку в файле журнала:
Не удалось загрузить файл или сборку, "System.Core, Version = 2.0.5.0..."
Googling System.Core 2.0.5.0, похоже, относится к SilverLight - который, как представляется, является одной из целевых фреймворков.
Этот компьютер не имеет установленной Visual Studio, но имеет обновление .NET 4.0 (4.0.3)
Есть ли что-то, что я должен делать по-другому для компиляции, что-то, что я должен исследовать в своих зависимостях или что-то, что я должен искать для установки на машине конечного пользователя? К чему относится 2.0.5.0?
Ответы
Ответ 1
Для .NET 4 вам необходимо обновить (KB2468871) для переносных библиотек классов. Из статьи KB:
Функция 5
Изменения в поддерживаемых портативных библиотеках. Эти изменения включают API обновления и модификации связующего. Это обновление позволяет связывать CLR успешно в портативные библиотеки, чтобы одна DLL могла работать на .NET Framework 4, в Silverlight, на Xbox или на Windows Phone. Это обновление добавляет общедоступные API Silverlight к .NET Framework 4 в в том же месте. Подписи API останутся Платформа. Все модификации на 100% совместимы и будут не нарушать существующий код.
Также см. раздел "Развертывание приложения .NET Framework" в Документация по переносимой библиотеке MSDN.
EDIT: На самом деле, если на компьютере установлен .NET 4.0.3, как вы упомянули, этого должно быть достаточно. Можете ли вы дважды проверить, действительно ли он установлен?