Невозможно скомпилировать шаблон проекта C ++ / CLI (. NET Core 3.1) с помощью команды сборки do tnet. - PullRequest
1 голос
/ 14 января 2020
  1. Установка последней стабильной Visual Studio 2019 16.4.2 (отметьте . NET Разработка ядра и Разработка рабочего стола с рабочими нагрузками C ++ , также убедитесь, что C ++ / CLI поддерживает компонент проверено).
  2. Создайте новый проект с помощью шаблона библиотеки классов CLR (. NET Core) (или пустой проект CLR (. NET Core), если хотите).
  3. Компиляция с помощью команды do tnet build завершится неудачно ( do tnet build CLRNetCoreTest.sln / p: конфигурация = Debug / p: платформа = x86 ) : enter image description here

Компиляция с помощью команды msbuild выполнена успешно ( "% ProgramFiles (x86)% \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ MSBuild.exe "CLRNetCoreTest.sln / p: Configuration = Debug /p:Platform=x86).

И это очень странно - я предположил do tnet для создания оболочки поверх msbuild ..

Пример проекта присоединен (запуск Build.bat для компиляции).

Ответы [ 2 ]

1 голос
/ 14 января 2020

Чтобы добавить больше деталей:

И это очень странно - я должен был сделать tnet оболочкой, построенной на вершине msbuild.

Согласен с Martin , dotnet build пока не поддерживает сборку проекта C ++, так как do tnet cli не знает, где найти необходимые C ++ xx.targets и xx.props.

Ваш проект является проектом C ++ / CLR (xx.vcxproj), целевой структурой которого является .net core, он имеет большую разницу с реальными .net core проектами (xx.csproj или xx.vbproj), xx.vcxproj импортирует множество файлов C ++, специфицированных c, которые не включены в .net core sdk.

Например: Go C:\Program Files\dotnet\sdk\xxx вы можете найти там множество целей и файлов реквизитов msbuild, но не можете найти Microsoft. Cpp .Default.props файл. Этот файл приходит из рабочей нагрузки C ++ вместо. net core SDK.

Так что, хотя dotnet build использует msbuild для сборки проекта, на самом деле он не использует тот же файл msbuild.exe из папки VS (C:\Program Files (x86)\Microsoft Visual Studio\xxx\xxx\MSBuild\1xxx\Bin\MSBuild.exe). И только msbuild.exe из VS IDE или пакета инструментов сборки MSBuild можно использовать для сборки этого проекта.

Кроме того:

Если ваша конечная цель состоит в сборке проект на удаленном сервере, возможно, вы ищете пакет Build Tools for Visual Studio 2019. (бесплатно, если вы получили соответствующую лицензию, более подробную информацию см. this ). Для этого не требуется VS IDE для быть установленным (Ссылка для скачивания здесь )

1 голос
/ 14 января 2020

C ++ проекты могут быть построены только с msbuild.exe, поставляемым с Visual Studio, так как он использует инструменты Visual Studio C ++.

Кроссплатформенная команда dotnet с ее кроссплатформенным дистрибутивом MSBuild не иметь эти инструменты и, как таковые, не в состоянии компилировать проекты C ++. Команда dotnet не использует версию MSBuild для Visual Studio.

...