2016-12-06 2 views
1

Ich versuche, eine git Befehlsausgabe in eine Datei zu speichern, bevor Kompilieren eines asp.net-Core-Projektes.Ausgabe in Datei GIT in .NET project.json Datei mit

In der „project.json“ Datei ich folgendes haben, die ausgeben sollte die letzte git Tag in eine Ausgabedatei (für Versionierung):

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

Der git Befehl in normalen git bash fein läuft und speichert in einer Datei. Aber wenn ich das Projekt in Visual Studio kompiliere, scheint ein Problem mit dem größer als Symbol zu sein. Sollte das irgendwie entkommen? Der Fehler zeigt: "fatal: kein gültiges Objekt name>"

Voll Fehler: „C: \ Program Files (x86) \ MSBuild \ Microsoft \ Visualstudio \ v14.0 \ DotNet \ Microsoft.DotNet. Common.Targets (262,5): Fehler: fatal: kein gültiges Objekt name>“

Irgendwelche Ideen?

Antwort

1

Haben Sie versucht,

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

Oh warten Ich sehe Bash ist mit Git für Windows installiert! Lass mich schnell testen –

+0

Großartig, das hat funktioniert! Es sieht nicht wie ‚bash‘ an die Umgebungsvariable standardmäßig hinzugefügt wird, wenn Git Installation von Windows, so dass die einzige Änderung, die ich auf Ihre snipped gemacht verweist auf den bash exe etwa so: „% Programfiles% \\ Git \\ bin \\ bash.exe -c 'git beschreiben --tags> version.txt' " –

1

Bitte versuchen Sie cmd-Skript (dh update_version.cmd) zu erstellen, den gleichen Befehl enthält:

git describe --tags > version.txt 

Aktualisieren Sie Ihre project.json:

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

dies funktioniert vielen Dank! Ich werde dies als Antwort bald markieren, nur warten, wenn jemand vielleicht weiß, ob dies getan werden kann, ohne eine Befehlsdatei zu erstellen (einfach in einem Befehl in Skripten) –

0

Was ich getan habe, ist etwas, was Ivan vorgeschlagen hat, dh ein Cmd-Skript auszuführen, aber auch eine JSON-Datei zu generieren mit der Versionsnummer.

Dies ist vielleicht besser als eine normale Textdatei, da die Json aus den neuen Optionen konfigurieren (OptionsConfigurationServiceCollectionExtensions) in Dotnet Kern gelesen werden.

keine genaue Antwort auf die Frage, aber vielleicht jemand anderes helfen. Hier ist das CMD die appsettingsversion.json-Datei zu generieren:

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