Дано: Моя локальная система ссылается на MSBuild по адресу "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSbuild.exe".Мой автоматизированный сервер сборки (Jenkins) не имеет этой версии MSBuild, поэтому я использовал chocolatey для загрузки инструментов microsoft-build-tools.
Проблема: Мой проект Visual Studio успешно компилируется локально, но выиграл 'не удалось скомпилировать на моем сервере автоматической сборки (Jenkins) из-за ошибки ReferenceAssembly:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets (1179,5): ошибка MSB3644: Ссылочные сборки для платформы ".NETFramework, Version = v4.6.2" не найдены.Чтобы решить эту проблему, установите SDK или Targeting Pack для этой версии платформы или перенастройте свое приложение на версию платформы, для которой у вас установлен SDK или Targeting Pack.Обратите внимание, что сборки будут разрешены из глобального кэша сборок (GAC) и будут использоваться вместо ссылочных сборок.Поэтому ваша сборка может быть неправильно нацелена на платформу, которую вы намереваетесь.
Я искал в Интернете и нашел возможное решение https://developercommunity.visualstudio.com/content/problem/137779/the-getreferencenearesttargetframeworktask-task-wa.html, где скрипт powershell изменяет установщик Microsoft Build Tools:
Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList 'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools" --quiet --add Microsoft.VisualStudio.Component.NuGet.BuildTools --add Microsoft.Net.Component.4.6.2.TargetingPack --norestart --force' -Wait -PassThru
Я запустил скрипт и увидел, что он изменяет установщик для выбора указанной цели 4.6.2.Однако целевой пакет 4.6.2 отсутствует в пути «C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework».Я думаю, что он успешно загрузил пакет один раз, но я удалил его, чтобы посмотреть, можно ли его воспроизвести на моем сервере сборки (Jenkins).
Я не хочу вручную вставлять целевой пакет v4.6.2 из моей локальной системы на сервер сборки.Любые идеи о том, как решить эту проблему справочной сборки?