diff --git a/NuGetPack.UnitTests/NuGetPackTests.cs b/NuGetPack.UnitTests/NuGetPackTests.cs
index ca297be..ced8a6e 100644
--- a/NuGetPack.UnitTests/NuGetPackTests.cs
+++ b/NuGetPack.UnitTests/NuGetPackTests.cs
@@ -297,7 +297,7 @@ public void TestGetDependenciesViaReferenceOuter1()
XAttribute attribute;
var results = creator.GetElements(
- nuspecFolder, nuProj1Csproj, isDebugVariable, true, false, null, out attribute);
+ nuspecFolder, nuProj1Csproj, isDebugVariable, true, false, null,null, out attribute);
var dependencies = results.Where(r => r.ElementType == ElementType.NuGetDependency)
.Select(r => r.Element).ToList();
@@ -321,7 +321,7 @@ public void TestGetDependenciesViaReferenceOuter2()
XAttribute attribute;
var results = creator.GetElements(
- nuspecFolder, nuProj2Csproj, isDebugVariable, true, false, null, out attribute);
+ nuspecFolder, nuProj2Csproj, isDebugVariable, true, false, null,null, out attribute);
var dependencies = results.Where(r => r.ElementType == ElementType.NuGetDependency)
.Select(r => r.Element).ToList();
@@ -335,7 +335,7 @@ public void TestGetInternalDependencies1()
var creator = new NuspecCreatorOldCsProj();
var results = creator.GetInternalDependencies(
- proj5Csproj, isDebugVariable, Path.GetDirectoryName(proj5Dll), null);
+ proj5Csproj, isDebugVariable, Path.GetDirectoryName(proj5Dll), null,null);
var dependencies = results.Where(r => r.ElementType == ElementType.NuGetDependency)
.Select(r => r.Element).ToList();
@@ -355,7 +355,7 @@ public void TestGetInternalDependencies1_OverridePreReleaseEmpty()
var creator = new NuspecCreatorOldCsProj();
var results = creator.GetInternalDependencies(
- proj5Csproj, isDebugVariable, Path.GetDirectoryName(proj5Dll), String.Empty);
+ proj5Csproj, isDebugVariable, Path.GetDirectoryName(proj5Dll), String.Empty, String.Empty);
var dependencies = results.Where(r => r.ElementType == ElementType.NuGetDependency)
.Select(r => r.Element).ToList();
@@ -373,7 +373,7 @@ public void TestGetInternalDependencies1_OverridePreReleaseAlpha102()
var creator = new NuspecCreatorOldCsProj();
var results = creator.GetInternalDependencies(
- proj5Csproj, isDebugVariable, Path.GetDirectoryName(proj5Dll), "alpha102");
+ proj5Csproj, isDebugVariable, Path.GetDirectoryName(proj5Dll), "alpha102",null);
var dependencies = results.Where(r => r.ElementType == ElementType.NuGetDependency)
.Select(r => r.Element).ToList();
@@ -542,7 +542,7 @@ public void TestGetPackage1Files()
XAttribute attribute;
var results = creator.GetElements(
- Path.GetDirectoryName(nuProj1Dll), nuProj1Csproj, isDebugVariable, true, false, null, out attribute);
+ Path.GetDirectoryName(nuProj1Dll), nuProj1Csproj, isDebugVariable, true, false, null,null, out attribute);
LinqAssert.Count(results, 22);
@@ -609,7 +609,7 @@ public void TestGetPackage2Files()
XAttribute attribute;
var results = creator.GetElements(
- Path.GetDirectoryName(nuProj2Dll), nuProj2Csproj, isDebugVariable, true, false, null, out attribute);
+ Path.GetDirectoryName(nuProj2Dll), nuProj2Csproj, isDebugVariable, true, false, null,null, out attribute);
LinqAssert.Count(results, 6);
@@ -642,7 +642,7 @@ public void TestGetPackage2Files_NoSource()
XAttribute attribute;
var results = creator.GetElements(
- Path.GetDirectoryName(nuProj2Dll), nuProj2Csproj, isDebugVariable, false, false, null, out attribute);
+ Path.GetDirectoryName(nuProj2Dll), nuProj2Csproj, isDebugVariable, false, false, null,null, out attribute);
LinqAssert.Count(results, 4);
@@ -670,7 +670,7 @@ public void TestGetPackage3Files()
XAttribute attribute;
var results = creator.GetElements(
- Path.GetDirectoryName(nuProj3Dll), nuProj3Csproj, isDebugVariable, true, false, null, out attribute);
+ Path.GetDirectoryName(nuProj3Dll), nuProj3Csproj, isDebugVariable, true, false, null,null, out attribute);
LinqAssert.Count(results, 13);
@@ -721,7 +721,7 @@ public void TestGetLibrary4Files()
XAttribute attribute;
var results = creator.GetElements(
- testRunDir, proj4Csproj, isDebugVariable, true, true, null, out attribute);
+ testRunDir, proj4Csproj, isDebugVariable, true, true, null,null, out attribute);
LinqAssert.Count(results, 18);
@@ -781,7 +781,7 @@ public void TestGetLibrary5Files()
XAttribute attribute;
var results = creator.GetElements(
- testRunDir, proj5Csproj, isDebugVariable, true, true, null, out attribute);
+ testRunDir, proj5Csproj, isDebugVariable, true, true, null,null, out attribute);
LinqAssert.Count(results, 15);
@@ -980,7 +980,7 @@ public void TestGetFiles()
XAttribute attribute;
var results = creator.GetElements(
- nuspecFolder, nuProj1Csproj, isDebugVariable, true, false, null, out attribute);
+ nuspecFolder, nuProj1Csproj, isDebugVariable, true, false, null,null, out attribute);
Assert.AreNotEqual(0, results.Count());
var files = results.Where(el =>
@@ -1001,7 +1001,7 @@ public void TestGetFilesIncludingVersions()
XAttribute attribute;
var results = creator.GetElements(
- nuspecFolder, nuProj3Csproj, isDebugVariable, true, false, null, out attribute);
+ nuspecFolder, nuProj3Csproj, isDebugVariable, true, false, null,null, out attribute);
Assert.AreNotEqual(0, results.Count);
diff --git a/NuGetPack/NuspecCreatorBase.cs b/NuGetPack/NuspecCreatorBase.cs
index 67910f8..cc05942 100644
--- a/NuGetPack/NuspecCreatorBase.cs
+++ b/NuGetPack/NuspecCreatorBase.cs
@@ -17,13 +17,13 @@ public abstract partial class NuspecCreatorBase
public void CreatePackage(
string projectPath, string assemblyPath, bool isDebug,
bool doCreatePkg = true, bool doIncludeCurrentProj = false,
- string preReleaseSuffixOverride = null)
+ string preReleaseSuffixOverride = null, string FinalVersion = null)
{
Console.WriteLine("Creating nuspec file");
NuGetPackConfig config;
var doc = CreateNuspec(
- projectPath, assemblyPath, isDebug, doIncludeCurrentProj, preReleaseSuffixOverride,
+ projectPath, assemblyPath, isDebug, doIncludeCurrentProj, preReleaseSuffixOverride,FinalVersion,
out config);
var nuspecPath = Path.ChangeExtension(assemblyPath, ".nuspec");
@@ -135,16 +135,16 @@ public void PublishPackage(string packagePath)
public XDocument CreateNuspec(
string projectPath, string assemblyPath, bool isDebug, bool doIncludeCurrentProj = false,
- string preReleaseSuffixOverride = null)
+ string preReleaseSuffixOverride = null, string FinalVersion = null)
{
return CreateNuspec(
- projectPath, assemblyPath, isDebug, doIncludeCurrentProj, preReleaseSuffixOverride,
+ projectPath, assemblyPath, isDebug, doIncludeCurrentProj, preReleaseSuffixOverride,FinalVersion,
out NuGetPackConfig config);
}
public XDocument CreateNuspec(
string projectPath, string assemblyPath, bool isDebug, bool doIncludeCurrentProj,
- string preReleaseSuffixOverride,
+ string preReleaseSuffixOverride,string FinalVersion,
out NuGetPackConfig config)
{
if (projectPath == null)
@@ -162,7 +162,7 @@ public XDocument CreateNuspec(
packageName = packageName.Substring(0, packageName.Length - nugetExtension.Length);
var fileVersion = FileVersionInfo.GetVersionInfo(assemblyPath);
- var version = GetVersion(fileVersion, preReleaseSuffixOverride);
+ var version = GetVersion(fileVersion, preReleaseSuffixOverride,FinalVersion);
var owners = fileVersion.CompanyName;
@@ -243,7 +243,7 @@ public XDocument CreateNuspec(
packageName, version, owners, authors, shortSummary,
longDescription, releaseNotes, licenseUrl, projectUrl, iconUrl, copyright, keywords, nuspecPath, projectPath,
isDebug, doAddFrameworkReferences, doIncludeSources,
- doIncludeCurrentProj, preReleaseSuffixOverride);
+ doIncludeCurrentProj, preReleaseSuffixOverride,FinalVersion);
return doc;
}
@@ -253,33 +253,40 @@ public XDocument CreateNuspec(
///
///
///
+ ///
///
- private string GetVersion(FileVersionInfo fileVersion, string preReleaseSuffixOverride)
+ private string GetVersion(FileVersionInfo fileVersion, string preReleaseSuffixOverride, string FinalVersion)
{
- var version = fileVersion.FileMajorPart + "." + fileVersion.FileMinorPart + "." + fileVersion.FileBuildPart;
+ if(FinalVersion == null)
+ {
+ var version = fileVersion.FileMajorPart + "." + fileVersion.FileMinorPart + "." + fileVersion.FileBuildPart;
- if (fileVersion.FilePrivatePart != 0)
- version += "." + fileVersion.FilePrivatePart;
+ if (fileVersion.FilePrivatePart != 0)
+ version += "." + fileVersion.FilePrivatePart;
- if (preReleaseSuffixOverride == null)
- {
- var fileVersionParts = fileVersion.ProductVersion.Split(new[] { '-' }, StringSplitOptions.None);
- if (fileVersionParts.Length > 1)
+ if (preReleaseSuffixOverride == null)
{
- var preReleaseName = string.Join("-", fileVersionParts.Skip(1));
+ var fileVersionParts = fileVersion.ProductVersion.Split(new[] { '-' }, StringSplitOptions.None);
+ if (fileVersionParts.Length > 1)
+ {
+ var preReleaseName = string.Join("-", fileVersionParts.Skip(1));
- if (string.IsNullOrWhiteSpace(preReleaseName))
- preReleaseName = "PreRelease";
+ if (string.IsNullOrWhiteSpace(preReleaseName))
+ preReleaseName = "PreRelease";
- version += "-" + preReleaseName;
+ version += "-" + preReleaseName;
+ }
}
+ else if (preReleaseSuffixOverride != string.Empty)
+ {
+ version += "-" + preReleaseSuffixOverride;
+ }
+
+ return version;
}
- else if (preReleaseSuffixOverride != string.Empty)
- {
- version += "-" + preReleaseSuffixOverride;
+ else{
+ return FinalVersion;
}
-
- return version;
}
public XDocument CreateNuspec(
@@ -301,13 +308,14 @@ public XDocument CreateNuspec(
bool doAddFrameworkReferences,
bool doIncludeSources,
bool doIncludeCurrentProj,
- string preReleaseSuffixOverride)
+ string preReleaseSuffixOverride,
+ string FinalVersion)
{
var nuspecFolder = Path.GetDirectoryName(nuspecPath);
var elements = GetElements(
nuspecFolder, projectPath, isDebug, doIncludeSources, doIncludeCurrentProj,
- preReleaseSuffixOverride,
+ preReleaseSuffixOverride,FinalVersion,
out var dependenciesAttribute);
@@ -327,7 +335,7 @@ public XDocument CreateNuspec(
dependencies.Add(d);
}
- var dependenciesElemnt = GetDependenciesForNewCsProj(projectPath, dependencies, preReleaseSuffixOverride);
+ var dependenciesElemnt = GetDependenciesForNewCsProj(projectPath, dependencies, preReleaseSuffixOverride,FinalVersion);
var metadataElement = new XElement("metadata",
new XElement("id", packageName),
@@ -377,7 +385,7 @@ public XDocument CreateNuspec(
return doc;
}
- protected abstract XElement GetDependenciesForNewCsProj(string projectPath, XElement dependencies, string preReleaseSuffixOverride);
+ protected abstract XElement GetDependenciesForNewCsProj(string projectPath, XElement dependencies, string preReleaseSuffixOverride,string FinalVersion);
public abstract List GetDependencies(string projectPath, out XAttribute dependenciesAttribute);
@@ -426,11 +434,12 @@ public List GetDependencies(string packagesFile)
///
///
///
+ ///
///
///
public List GetInternalDependencies(
string projectPath, bool isDebug, string buildMachineBinFolder,
- string preReleaseSuffixOverride)
+ string preReleaseSuffixOverride, string FinalVersion)
{
var references = GetReferences(projectPath, true);
var projectFolder = Path.GetDirectoryName(projectPath);
@@ -450,7 +459,7 @@ public List GetInternalDependencies(
DebugOut(() => "assemblyPath = " + assemblyPath);
var fileVersion = FileVersionInfo.GetVersionInfo(assemblyPath);
- var referenceVersion = GetVersion(fileVersion, preReleaseSuffixOverride);
+ var referenceVersion = GetVersion(fileVersion, preReleaseSuffixOverride,FinalVersion);
results.Add(
new DependencyInfo(
@@ -503,16 +512,18 @@ protected void DebugOut(Func getText){}
/// If true, includes source files in NuSpec
///
///
+ ///
///
/// If true, treats given project as regular project,
/// if not treats it as a NuGet definition project only - does not take binaries or source from project
///
///
+ ///
///
/// Elements for NuSpec
public List GetElements(
string nuspecFolder, string projectPath, bool isDebug, bool doIncludeSources,
- bool doIncludeCurrentProj, string preReleaseSuffixOverride,
+ bool doIncludeCurrentProj, string preReleaseSuffixOverride,string FinalVersion,
out XAttribute dependenciesAttribute)
{
if (nuspecFolder == null)
@@ -548,7 +559,7 @@ public List GetElements(
if (doIncludeCurrentProj)
{
- IncludeCurrentProject(nuspecFolder, projectPath, isDebug, doIncludeSources, preReleaseSuffixOverride, result, projectFolder);
+ IncludeCurrentProject(nuspecFolder, projectPath, isDebug, doIncludeSources, preReleaseSuffixOverride,FinalVersion, result, projectFolder);
}
bool? referencesContainNuGetPackConfig =
@@ -595,7 +606,7 @@ public List GetElements(
}
protected abstract void IncludeCurrentProject(string nuspecFolder, string projectPath, bool isDebug,
- bool doIncludeSources, string preReleaseSuffixOverride, List result, string projectFolder);
+ bool doIncludeSources, string preReleaseSuffixOverride,string FinalVersion, List result, string projectFolder);
#region NuGet Project Parsing
diff --git a/NuGetPack/NuspecCreatorHelper.cs b/NuGetPack/NuspecCreatorHelper.cs
index 1575307..34de269 100644
--- a/NuGetPack/NuspecCreatorHelper.cs
+++ b/NuGetPack/NuspecCreatorHelper.cs
@@ -13,7 +13,7 @@ public static class NuspecCreatorHelper
public static void CreatePackages(
string binFolder, string solutionFolder, bool isDebug,
bool doCreatePkg = true, bool doIncludeCurrentProj = false,
- string preReleaseSuffixOverride = null)
+ string preReleaseSuffixOverride = null, string FinalVersion = null)
{
var projects = new LinkedList();
FindProjects(solutionFolder, projects);
@@ -29,7 +29,7 @@ public static void CreatePackages(
creator.CreatePackage(
projectPath, assemblyPath, isDebug, doCreatePkg, doIncludeCurrentProj,
- preReleaseSuffixOverride);
+ preReleaseSuffixOverride,FinalVersion);
}
}
diff --git a/NuGetPack/NuspecCreatorNewCsProj.cs b/NuGetPack/NuspecCreatorNewCsProj.cs
index c9f94a8..289704a 100644
--- a/NuGetPack/NuspecCreatorNewCsProj.cs
+++ b/NuGetPack/NuspecCreatorNewCsProj.cs
@@ -228,7 +228,7 @@ void AddConditionalPackages(List conditionalPackages, XElement res)
}
}
- private List GetProjectDependenciesNetStandard(string projectPath, string preReleaseSuffixOverride)
+ private List GetProjectDependenciesNetStandard(string projectPath, string preReleaseSuffixOverride, string FinalVersion)
{
var result = new List();
@@ -255,9 +255,9 @@ private List GetProjectDependenciesNetStandard(string projectPath, str
return result;
}
- protected override XElement GetDependenciesForNewCsProj(string projectPath, XElement dependencies, string preReleaseSuffixOverride)
+ protected override XElement GetDependenciesForNewCsProj(string projectPath, XElement dependencies, string preReleaseSuffixOverride,string FinalVersion)
{
- var projDependencies = GetProjectDependenciesNetStandard(projectPath, preReleaseSuffixOverride);
+ var projDependencies = GetProjectDependenciesNetStandard(projectPath, preReleaseSuffixOverride,FinalVersion);
var result = GetPackageDependenciesNetStandard(projectPath, projDependencies);
return result;
@@ -530,7 +530,7 @@ protected override IEnumerable GetProjectReference(XElement proj, XNam
}
protected override void IncludeCurrentProject(string nuspecFolder, string projectPath, bool isDebug,
- bool doIncludeSources, string preReleaseSuffixOverride, List result, string projectFolder)
+ bool doIncludeSources, string preReleaseSuffixOverride,string FinalVersion, List result, string projectFolder)
{
}
diff --git a/NuGetPack/NuspecCreatorOldCsProj.cs b/NuGetPack/NuspecCreatorOldCsProj.cs
index 39941eb..885bd8f 100644
--- a/NuGetPack/NuspecCreatorOldCsProj.cs
+++ b/NuGetPack/NuspecCreatorOldCsProj.cs
@@ -127,9 +127,9 @@ protected override IEnumerable GetContentFilesForNetStandard(str
}
protected override void IncludeCurrentProject(string nuspecFolder, string projectPath, bool isDebug,
- bool doIncludeSources, string preReleaseSuffixOverride, List result, string projectFolder)
+ bool doIncludeSources, string preReleaseSuffixOverride,string FinalVersion, List result, string projectFolder)
{
- result.AddRange(GetInternalDependencies(projectPath, isDebug, nuspecFolder, preReleaseSuffixOverride));
+ result.AddRange(GetInternalDependencies(projectPath, isDebug, nuspecFolder, preReleaseSuffixOverride, FinalVersion));
result.AddRange(GetBinaryReferences(nuspecFolder, projectFolder, projectPath, isDebug, nuspecFolder));
@@ -139,7 +139,7 @@ protected override void IncludeCurrentProject(string nuspecFolder, string projec
result.AddRange(GetDependenciesFromProject(projectFolder, projectPath));
}
- protected override XElement GetDependenciesForNewCsProj(string projectPath, XElement dependencies, string preReleaseSuffixOverride)
+ protected override XElement GetDependenciesForNewCsProj(string projectPath, XElement dependencies, string preReleaseSuffixOverride,string FinalVersion)
{
var result = new XElement("dependencies", dependencies);
return result;
diff --git a/NuGetPack/Program.cs b/NuGetPack/Program.cs
index 51c3b0b..e9f7be5 100644
--- a/NuGetPack/Program.cs
+++ b/NuGetPack/Program.cs
@@ -21,14 +21,14 @@ public static void Main(string[] args)
if (cla.Mode != Mode.Solution)
{
NusPecCreatorFactory.GetCreator(cla.ProjPath).CreatePackage(
- cla.ProjPath, cla.DllPath, cla.IsDebug, cla.DoCreateNuPkg, cla.DoIncludeCurrentProj, cla.PreReleaseSuffixOverride);
+ cla.ProjPath, cla.DllPath, cla.IsDebug, cla.DoCreateNuPkg, cla.DoIncludeCurrentProj, cla.PreReleaseSuffixOverride, cla.FinalVersion);
}
else
{
NuspecCreatorBase.SlnOutputFolder = cla.BinFolder;
NuspecCreatorHelper.CreatePackages(
- cla.BinFolder, cla.SolutionFolder, cla.IsDebug, cla.DoCreateNuPkg, cla.DoIncludeCurrentProj, cla.PreReleaseSuffixOverride);
+ cla.BinFolder, cla.SolutionFolder, cla.IsDebug, cla.DoCreateNuPkg, cla.DoIncludeCurrentProj, cla.PreReleaseSuffixOverride, cla.FinalVersion);
}
//Console.ReadKey();
@@ -47,6 +47,7 @@ public class CommandLineArguments
public bool DoCreateNuPkg { get; set; }
public bool DoIncludeCurrentProj { get; set; }
public string PreReleaseSuffixOverride { get; set; }
+ public string FinalVersion { get; set; }
}
public static bool TryParseArguments(
@@ -63,6 +64,7 @@ public static bool TryParseArguments(
string binFolder = null;
string solutionFolder = null;
string preReleaseSuffixOverride = null;
+ string FinalVersion = null;
commandLineArguments = null;
string config = null;
@@ -142,6 +144,13 @@ public static bool TryParseArguments(
if (preReleaseSuffixOverride.StartsWith("-"))
preReleaseSuffixOverride = preReleaseSuffixOverride.Substring(1);
}
+ else if (arg.ToLower().StartsWith("version=") || arg.ToLower().StartsWith("finalversion="))
+ {
+ if (FinalVersion != null)
+ return false;
+
+ FinalVersion = arg.Substring(arg.IndexOf('=') + 1);
+ }
else
{
return false;
@@ -186,6 +195,7 @@ public static bool TryParseArguments(
DoCreateNuPkg = doCreateNuPkg,
DoIncludeCurrentProj = doIncludeCurrentProj,
PreReleaseSuffixOverride = preReleaseSuffixOverride,
+ FinalVersion = FinalVersion
};
return true;
@@ -194,7 +204,7 @@ public static bool TryParseArguments(
private static void WriteError()
{
Console.WriteLine(
- @"Correct usage: NuGetPack.exe [project] [] [nopkg] [pre=|preReleaseSuffixOverride=]");
+ @"Correct usage: NuGetPack.exe [project] [] [nopkg] [pre=|preReleaseSuffixOverride=] [version=|FinalVersion=]");
Console.WriteLine(
@"Via post build event: NuGetPack.exe [project] ""$(ProjectPath)"" ""$(TargetPath)"" $(ConfigurationName)");
Console.WriteLine(