Вывод в файл с помощью GIT в файле.NET project.json
Я пытаюсь сохранить вывод команды git в файл перед компиляцией проекта asp.net-core.
В файле "project.json" у меня есть следующее, которое должно вывести последний тег git в выходной файл (для контроля версий):
"scripts": {
"precompile": [
"git describe --tags > version.txt"
]
},
Команда git отлично работает в обычном git bash и сохраняет в файл. Но когда я компилирую проект в Visual Studio, возникает проблема с символом больше, чем символ. Нужно ли как-то избежать этого? Ошибка показывает: "fatal: Недопустимое имя объекта>"
Полная ошибка: "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets(262,5): ошибка: фатальная: недопустимое имя объекта>"
Есть идеи?
3 ответа
Ты пытался
"scripts": {
"precompile": [
"bash -c 'git describe --tags > version.txt'"
]
},
Пожалуйста, попробуйте создать cmd-скрипт (т.е. update_version.cmd), содержащий ту же команду:
git describe --tags > version.txt
Обновите свой project.json:
"scripts": {
"precompile": "update_version.cmd"
},
То, что я в итоге сделал, это то, что предложил Иван, то есть запустить скрипт cmd, но также сгенерировать файл JSON с номером версии.
Возможно, это лучше, чем обычный текстовый файл, поскольку Json можно прочитать из новых параметров конфигурации (OptionsConfigurationServiceCollectionExtensions) в ядре dotnet.
Не точный ответ на вопрос, но может помочь кому-то еще. Вот CMD для генерации файла appsettingsversion.json:
project.json:
"scripts": {
"prepublish": [ "bower install", "dotnet bundle", "update_version.cmd" ]
}
update_version.cmd:
for /f %%i in ('git describe --tags') do set version=%%i
echo {^"VersionSettings^":{^"Number^": ^"%version%^"}} > appsettingsversion.json