Вывод в файл с помощью 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
Другие вопросы по тегам