2016-12-06 61 views
1

我想在編譯前將一個git命令輸出保存到一個文件中,這是一個asp.net核心項目。在.NET項目中使用GIT輸出到文件project.json文件

在「project.json」文件我有以下的,應輸出最新的git標籤到輸出文件(版本):

"scripts": { 
     "precompile": [ 
      "git describe --tags > version.txt" 
     ] 
     }, 

的git的命令運行在正常的git bash和罰款保存到文件。但是,當我在Visual Studio中編譯該項目時,似乎存在大於符號的問題。這應該以某種方式逃脫嗎?該錯誤表示: 「致命的:不是有效的對象名稱>

完整的錯誤: 「C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ v14.0 \ DOTNET的\ Microsoft.DotNet。 Common.Targets(262,5):錯誤:致命:不是有效的對象名稱>「

任何想法?

回答

1

你試過

"scripts": { 
    "precompile": [ 
     "bash -c 'git describe --tags > version.txt'" 
    ] 
    }, 
+0

哦,等等我看到bash與Git for Windows一起安裝!讓我快速測試 –

+0

偉大的工作!在安裝Git Windows時,默認情況下,環境變量中不會添加'bash',所以我對你的修改所作的唯一修改就是引用bash exe文件,例如: 「%ProgramFiles%\\ Git \\ bin \\ bash.exe -c'git describe --tags> version.txt'「 –

1

請嘗試創建CMD腳本(即update_version.cmd)含有相同的命令:

git describe --tags > version.txt 

更新您的project.json:

"scripts": { 
    "precompile": "update_version.cmd" 
    }, 
+0

這個工程非常感謝!我會很快將這個標記爲答案,只是等待有人可能知道這是否可以在不創建命令文件的情況下完成(只需在腳本中運行一個命令即可) –

0

我最終做的是有點伊萬建議運行一個cmd腳本,但也生成一個JSON文件與版本號。

這可能比正常的文本文件更好,因爲可以從dotnet核心中的新配置選項(OptionsConfigurationServiceCollectionExtensions)中讀取Json。

不是問題的確切答案,但可能會幫助其他人。 這裏是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