Создание проекта библиотеки портативных классов в сервере сборки не выполняется

Недавно я добавил некоторые пользовательские проекты 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. portable targets

Я проверил свою машину разработки (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 не работает из коробки.

Ответ 1

Более общее и элегантное решение - установить последние сборники ссылок на Microsoft.NET Portable Library Assemblies. Это установит profile138 среди многих других.

Отдельный установщик можно найти по адресу:

Ответ 2

Копирование желаемого профиля (явно в сообщении об ошибке) с компьютера-разработчика на сервер сборки после установки Портативных средств библиотеки классов, позволил моей работе работать.

По-видимому, портативная библиотека классов, как и сейчас, не включает в себя самые современные переносные профили.

Если кто-то знает более современный способ получить переносные профили на сервере сборки, кроме установки VS или копирования их вручную, я действительно хотел бы знать.

UPDATE

Путь на моей машине dev для папки, которая будет скопирована на серверную машину (путь на сервере был одинаков):

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136

Ответ 3

Профиль136 поставляется с версией пакета таргетинга переносимых библиотек, который был частью Phone SDK 8.0 (или более позднего обновления VS для VS 2012). Версия используемого вами пакета таргетинга старше.