Недавно я добавил некоторые пользовательские проекты 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' (вам не хватает ссылки на сборку?)
Спецификации сервера сборки:
- Стандарт Windows Server 2008 R2
- TeamCity 8.0.4
- .NET 4.5
- Portable Class Library Tools (как указано здесь)
- Silverlight 5 SDK
Решение - это приложение .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 не работает из коробки.