Ответ 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 с этой поддержкой.