Ошибка APPX3212: Корневая папка SDK для 'Portable 7.0' не может быть найдена

Я пытаюсь создать свое решение с помощью TeamCity/MSBuild. Это проект WebAPI, который разделяет некоторые объекты в PCL с мобильным клиентом.

Я вижу, что есть несколько предостережений по поводу того, что библиотеки ссылок PCL установлены на сервере сборки, и я думаю, что я отсортировал (Построение проекта библиотеки портативных классов на сервере сборки не удается)

Однако во время сборки переносимой библиотеки классов я получаю сообщение об ошибке:

[11:20:49][Doctrina.Pcl.Entities\Doctrina.Pcl.Entities.csproj] _GetSdkToolPaths [11:20:49][_GetSdkToolPaths] GetSdkPropertyValue *[11:20:49][GetSdkPropertyValue] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(975, 5): error APPX3212: SDK root folder for 'Portable 7.0' cannot be located. See http://go.microsoft.com/fwlink/?prd=12560&pver=1.0&plcid=0x409&ar=MSDN&sar=PlatformMultiTargeting&o1=Portable&o2=7.0 for more information.*

Ссылка "help" не идет никуда полезной, и, похоже, она очень устойчива к ошибкам в плане поиска какой-либо резолюции.

У меня нет Visual Studio 2015, установленного на сервере сборки вообще, но я установил инструменты PortableClassLibrary, скопировал справочный каталог с моего локального ПК и т.д. в соответствии с другим связанным вопросом SO.

Помогите пожалуйста?

Ответ 1

Я столкнулся с этой ошибкой при попытке создания переносных проектов, ориентированных на .NET Standard.

Мне удалось решить проблему без установки Visual Studio на моем сервере сборки, скопировав с компьютера, на котором установлена ​​Visual Studio:

  • C:\Program Files (x86)\Microsoft SDK\Portable\v14.0
  • C:\Program Files (x86)\MSBuild\Microsoft\Portable
  • C:\Program Files (x86)\ReferenceAssemblies\Microsoft\Framework.NETPortable

Позже я попытался создать проект WebApi, ориентированный на .NET Core (это был файл xproj), и как только я добавил файл XProj в мое решение, мне пришлось также скопировать:

  • C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet
  • C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet.Web

Это меня немного улучшило, но это также заставило другие проекты перестать правильно строить (которые отлично работали без файла XProj в решении). Одна вещь, которую я заметил, инструмент NuGet для .NET Core не поддерживает аутентифицированные фиды NuGet, поэтому мне пришлось включить анонимный доступ к моему каналу. Но теперь мой проект .NET Standard теперь терпит неудачу с ошибкой MSB4057: целевой объект "_GenerateDependencyFragmentJson" не существует в проекте.

Мне еще предстоит выяснить это, но я надеюсь, что эта информация поможет кому-то. Если вы не используете xproj файлы и просто пытаетесь использовать проекты .NET Standard, вы должны все, что вам нужно, создать без установки Visual Studio.

Просто сторонняя заметка, я очень старался избежать копирования этих файлов, сначала попробовав установить Microsoft Build Tools 2015 Update 3, надеясь, что он поместит нужные файлы на место, но это не печально. Я возлагаю надежды на следующую версию MSBuild, которая используется в VS15, и надеясь, что пакет сборки инструментов будет иметь все необходимое для создания этого материала, когда он появится, поскольку не похоже, что они обновляют 2015 Build Tools с этой поддержкой.