Ответ 1
Более общее и элегантное решение - установить последние сборники ссылок на Microsoft.NET Portable Library Assemblies. Это установит profile138 среди многих других.
Отдельный установщик можно найти по адресу:
Недавно я добавил некоторые пользовательские проекты Portable Class Library в приложение, встроенное в сервер сборки. Сборка работала нормально, но после этого она перестала работать и отобразила следующие сообщения:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983, 5): предупреждение MSB3644: эталонные сборки для каркаса ".NETPortable, Version = v4.0, Profile = Profile136" не были найдены.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578, 5): предупреждение MSB3270: произошел несоответствие между процессором архитектура построенного проекта "MSIL" и процессор архитектура ссылки "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll", "AMD64".
error CS0234: Тип или имя пространства имен Linq не существует в namespace 'System' (вам не хватает ссылки на сборку?)
Спецификации сервера сборки:
Решение - это приложение .NET 4.0, а переносные проекты предназначены только для .NET4.0 + e Silverlight 5.
Я проверил свою машину разработки (Windows 8, Visual Studio 2012). На самом деле есть папка "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136" (на самом деле профили для .NET 4.0 достигают 158). Однако в машине построения есть только папки для профилей до 131.
Обновлены ли инструменты библиотеки портативных классов? Кажется, он пропускает установку профилей для самых последних платформ.
UPDATE
Я скопировал ".NETPortable\v4.0\Profile\Profile136" моей машины разработки на сервер сборки, и теперь приложение успешно сработает. Я все еще хотел бы знать, почему установка средств Portable Class Library Tools не работает из коробки.
Более общее и элегантное решение - установить последние сборники ссылок на Microsoft.NET Portable Library Assemblies. Это установит profile138 среди многих других.
Отдельный установщик можно найти по адресу:
Копирование желаемого профиля (явно в сообщении об ошибке) с компьютера-разработчика на сервер сборки после установки Портативных средств библиотеки классов, позволил моей работе работать.
По-видимому, портативная библиотека классов, как и сейчас, не включает в себя самые современные переносные профили.
Если кто-то знает более современный способ получить переносные профили на сервере сборки, кроме установки VS или копирования их вручную, я действительно хотел бы знать.
UPDATE
Путь на моей машине dev для папки, которая будет скопирована на серверную машину (путь на сервере был одинаков):
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136
Профиль136 поставляется с версией пакета таргетинга переносимых библиотек, который был частью Phone SDK 8.0 (или более позднего обновления VS для VS 2012). Версия используемого вами пакета таргетинга старше.