public static string PackTool(string name, string sourceDirectory, string outputDirectory, string version) { var nuspecFile = Path.Combine(outputDirectory, name + ".nuspec"); using (var w = new StreamWriter(nuspecFile)) { w.WriteLine(@"<?xml version=""1.0""?> <package > <metadata> <id>" + name + @"</id> <version>" + version + @"</version> <authors>sidiandi</authors> <owners>sidiandi</owners> <licenseUrl>https://opensource.org/licenses/BSD-3-Clause</licenseUrl> <projectUrl>https://github.com/sidiandi/sidi.project</projectUrl> <iconUrl>https://github.com/sidiandi/sidi.project/icon.ico</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Tool</description> <releaseNotes></releaseNotes> <copyright>Copyright 2017 https://github.com/sidiandi</copyright> <tags></tags> <dependencies> </dependencies> </metadata> <files> <file src=" + SubProcess.Quote(sourceDirectory + @"\**\*") + @" target=""tools"" /> </files> </package> "); } string package = null; var p = new List <string>(); p.AddRange(new[] { "pack", nuspecFile, "-OutputDirectory", outputDirectory }); if (!String.IsNullOrEmpty(version)) { p.AddRange(new[] { "-Version", version }); } var nuget = new SubProcess("nuget", p.ToArray()); nuget.Run().Wait(); package = nuget.Output.RegexGet(@"Successfully created package '([^']+)'."); Console.WriteLine(package); return(package); }