Задача «GetReferenceNearestTargetFrameworkTask» не найдена - PullRequest
0 голосов
/ 06 мая 2019

Дано: Моя локальная система ссылается на 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 из моей локальной системы на сервер сборки.Любые идеи о том, как решить эту проблему справочной сборки?

1 Ответ

0 голосов
/ 07 мая 2019

Для «GetReferenceNearestTargetFrameworkTask»:

Вы можете использовать powershell для вызова installer.exe и установки недостающих компонентов.

Кроме того, вы можете запустить vs installer на вашем сервере и изменить ваши инструменты сборки для установки следующих пакетов:

enter image description here

Любые идеи о том, как решить эту проблему справочной сборки?

If they are unchecked, check them and click modify button to install them by vs installer.exe.

And if they are checked, uncheck them and click modify to remove completely. After that, check them to reinstall the 4.6.2 framework.

Обновление:

После моей проверки изменить в Get Tools and Features не могупомогите разрешить сборку, пока они должны. Эта опция может работать только для установки новой платформы (которая не была установлена), но не может восстановить 4.6.2 после установки, но теперь не работает.

Загрузить этот пакет разработчика Вручную и запустите его, чтобы помочь устранить пропущенные пакеты.

Кроме того: я удаляю папку v4.6.2 в C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework и возвращаю ее обратно, запуская пакет для восстановления.

...