diff --git a/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj b/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj
index ad327582..cf75137d 100644
--- a/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj
+++ b/src/Nerdbank.GitVersioning.Tasks/Nerdbank.GitVersioning.Tasks.csproj
@@ -46,19 +46,6 @@
-
-
- ..\nerdbank-gitversioning.npm\out\nbgv.nuget\
-
-
-
- $(NpmPackageLayoutDir)$([System.IO.Path]::GetDirectoryName('%(_PackageFiles.PackagePath)'))\%(FileName)%(Extension)
- $(NpmPackageLayoutDir)%(FileName)%(Extension)
-
-
-
-
-
true
diff --git a/src/nbgv/Program.cs b/src/nbgv/Program.cs
index fb29148e..69e5879c 100644
--- a/src/nbgv/Program.cs
+++ b/src/nbgv/Program.cs
@@ -264,7 +264,11 @@ private static ExitCodes OnGetVersionCommand(string projectPath, string format,
Console.WriteLine("NPM package Version: {0}", oracle.NpmPackageVersion);
break;
case "json":
- Console.WriteLine(JsonConvert.SerializeObject(oracle, Formatting.Indented));
+ var converters = new JsonConverter[]
+ {
+ new Newtonsoft.Json.Converters.VersionConverter(),
+ };
+ Console.WriteLine(JsonConvert.SerializeObject(oracle, Formatting.Indented, converters));
break;
default:
Console.Error.WriteLine("Unsupported format: {0}", format);
diff --git a/src/nbgv/nbgv.csproj b/src/nbgv/nbgv.csproj
index a047810e..3d23899e 100644
--- a/src/nbgv/nbgv.csproj
+++ b/src/nbgv/nbgv.csproj
@@ -23,4 +23,17 @@
+
+
+ ..\nerdbank-gitversioning.npm\out\nbgv.cli\
+
+
+
+ $(NpmPackageLayoutDir)$([System.IO.Path]::GetDirectoryName('%(_PackageFiles.PackagePath)'))\%(FileName)%(Extension)
+ $(NpmPackageLayoutDir)%(FileName)%(Extension)
+
+
+
+
+
diff --git a/src/nerdbank-gitversioning.npm/gulpfile.js b/src/nerdbank-gitversioning.npm/gulpfile.js
index 175b0f33..909e3d06 100644
--- a/src/nerdbank-gitversioning.npm/gulpfile.js
+++ b/src/nerdbank-gitversioning.npm/gulpfile.js
@@ -62,3 +62,9 @@ gulp.task('default', ['package'], function() {
gulp.task('watch', ['tsc'], function() {
return gulp.watch('**/*.ts', ['tsc']);
});
+
+gulp.task('test', ['tsc'], async function() {
+ var nbgv = require('./out');
+ var v = await nbgv.getVersion();
+ console.log(v);
+});
diff --git a/src/nerdbank-gitversioning.npm/ts/index.ts b/src/nerdbank-gitversioning.npm/ts/index.ts
index d5e76194..1c673168 100644
--- a/src/nerdbank-gitversioning.npm/ts/index.ts
+++ b/src/nerdbank-gitversioning.npm/ts/index.ts
@@ -5,7 +5,7 @@ import * as path from 'path';
var camelCase = require('camel-case')
import {execAsync} from './asyncprocess';
-const nbgvPath = 'nbgv.nuget';
+const nbgvPath = 'nbgv.cli';
/**
* The various aspects of a version that can be calculated.
@@ -42,25 +42,16 @@ export interface IGitVersion {
*/
export async function getVersion(projectDirectory?: string): Promise {
projectDirectory = projectDirectory || '.';
- var getVersionScriptPath = path.join(__dirname, nbgvPath, "tools", "Get-Version.ps1");
- var versionText = await execAsync(`powershell -ExecutionPolicy Bypass -Command "& '${getVersionScriptPath}' -ProjectDirectory '${projectDirectory}'"`)
+ var getVersionScriptPath = path.join(__dirname, nbgvPath, "tools", "netcoreapp2.1", "any", "nbgv.dll");
+ var versionText = await execAsync(`dotnet "${getVersionScriptPath}" get-version --project "${projectDirectory}" --format json`)
if (versionText.stderr) {
throw versionText.stderr;
}
- var varsRegEx = /^(\w+)\s*: (.+)/mg;
- var match;
+ var directResult = JSON.parse(versionText.stdout);
var result = {};
- while (match = varsRegEx.exec(versionText.stdout)) {
- // Do a few type casts if appropriate.
- let value = match[2];
- if (value.toUpperCase() === 'TRUE') {
- value = true;
- } else if (value.toUpperCase() === 'FALSE') {
- value = false;
- }
-
- result[camelCase(match[1])] = value;
+ for (var field in directResult) {
+ result[camelCase(field)] = directResult[field];
}
return result;
@@ -69,7 +60,7 @@ export async function getVersion(projectDirectory?: string): Promise