发布到nuget
This commit is contained in:
parent
933daed374
commit
452e483b33
88
发布NuGet.cs
88
发布NuGet.cs
|
@ -1,4 +1,5 @@
|
|||
//assembly=DLL\NuGet.exe
|
||||
//assembly=..\Src\DLL\NuGet.exe
|
||||
//assembly=System.ComponentModel.DataAnnotations
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
@ -15,26 +16,27 @@ namespace NewLife.Reflection
|
|||
{
|
||||
static void Main()
|
||||
{
|
||||
//PathHelper.BaseDirectory = @"E:\X\Src\NewLife.Cube";
|
||||
XTrace.Debug = true;
|
||||
XTrace.UseConsole();
|
||||
|
||||
// 查找NuGet.exe
|
||||
var ng = "..\\DLL\\NuGet.exe".GetFullPath();
|
||||
var ng = "..\\..\\Src\\DLL\\NuGet.exe".GetFullPath();
|
||||
|
||||
//"cmd".Run("/c del *.nuspec /f/q");
|
||||
foreach(var item in ".".AsDirectory().GetAllFiles("*.nuspec"))
|
||||
{
|
||||
Console.WriteLine("删除 {0}", item);
|
||||
item.Delete();
|
||||
}
|
||||
}
|
||||
// 找到名称
|
||||
var proj = ".".AsDirectory().FullName.EnsureEnd("\\");
|
||||
|
||||
Console.WriteLine("proj项目:{0}", proj);
|
||||
string[] pathsplit = proj.Split("\\");
|
||||
|
||||
var name = pathsplit[pathsplit.Count() - 1];
|
||||
Console.WriteLine("项目:{0}", name);
|
||||
proj = name+".csproj";
|
||||
var name = "NewLife.Redis";
|
||||
Console.WriteLine("项目:{0}", name);
|
||||
proj = ".".AsDirectory().GetAllFiles("*.csproj").FirstOrDefault().FullName;
|
||||
var spec = name + ".nuspec";
|
||||
var specFile = spec.GetFullPath();
|
||||
|
||||
|
@ -46,12 +48,16 @@ namespace NewLife.Reflection
|
|||
{
|
||||
Console.WriteLine("只能找项目文件了,总得做点啥不是");
|
||||
//编译当前工程
|
||||
"msbuild".Run(proj + " /t:Rebuild /p:Configuration=Release /p:VisualStudioVersion=12.0 /noconlog /nologo", 8000);
|
||||
"msbuild".Run(proj + " /t:Rebuild /p:Configuration=Release /p:VisualStudioVersion=15.0 /noconlog /nologo", 8000);
|
||||
//"NuGet".Run("spec -f -a " + name, 5000);
|
||||
return;
|
||||
}
|
||||
Console.WriteLine("目标 {0}", tar);
|
||||
ng.Run("spec -Force -a " + tar, 5000);
|
||||
/*var sCmd = new NuGet.CommandLine.SpecCommand();
|
||||
sCmd.Force = true;
|
||||
sCmd.AssemblyPath = tar;
|
||||
sCmd.ExecuteCommand();*/
|
||||
|
||||
var spec2 = ".".AsDirectory().GetAllFiles(spec).First().Name;
|
||||
if (!spec.EqualIgnoreCase(spec2)) File.Move(spec2, spec);
|
||||
|
@ -65,33 +71,49 @@ namespace NewLife.Reflection
|
|||
// 修改配置文件
|
||||
cfg.Metadata.Id = name2;
|
||||
cfg.Metadata.LicenseUrl = "http://www.NewLifeX.com";
|
||||
cfg.Metadata.ProjectUrl = "http://www.NewLifeX.com/showtopic-51.aspx";
|
||||
cfg.Metadata.ProjectUrl = "https://github.com/NewLifeX";
|
||||
cfg.Metadata.IconUrl = "http://www.NewLifeX.com/favicon.ico";
|
||||
cfg.Metadata.Copyright = "Copyright 2002-{0} 新生命开发团队 http://www.NewLifeX.com".F(DateTime.Now.Year);
|
||||
cfg.Metadata.Tags = "新生命团队 X组件 NewLife " + name;
|
||||
cfg.Metadata.ReleaseNotes = "http://www.newlifex.com/showtopic-51.aspx";
|
||||
cfg.Metadata.ReleaseNotes = "https://github.com/NewLifeX/NewLife.Redis";
|
||||
//cfg.Metadata.Authors="新生命开发团队";
|
||||
//cfg.Metadata.Owners="新生命开发团队";
|
||||
|
||||
/*var rep = new RepositoryMetadata();
|
||||
rep.Type = "git";
|
||||
rep.Url = "https://github.com/NewLifeX/X.git";
|
||||
cfg.Metadata.Repository = rep;*/
|
||||
|
||||
// 清空依赖
|
||||
cfg.Metadata?.DependencySets?.Clear();
|
||||
var dgs = cfg.Metadata.DependencySets;
|
||||
if (dgs != null) dgs.Clear();
|
||||
//var dgs = cfg.Metadata.DependencyGroups;
|
||||
//dps.RemoveAll(e => e.Id == "SampleDependency");
|
||||
|
||||
//var fx = new NuGet.Frameworks.NuGet.Frameworks1094018.NuGetFramework(".NETFramework4.5");
|
||||
//var dg = new PackageDependencyGroup(fx, new PackageDependency[0]);
|
||||
//dgs.Add(dk);
|
||||
|
||||
// 自动添加所有文件
|
||||
if (cfg.Files == null) cfg.Files = new List<ManifestFile>();
|
||||
cfg.Files.Clear();
|
||||
if (cfg.Files.Count == 0)
|
||||
{
|
||||
AddFile(cfg, name, "dll;xml;pdb;exe", @"..\..\Bin", @"lib\net45");
|
||||
AddFile(cfg, name, "dll;xml;pdb;exe", @"..\..\Bin4", @"lib\net40");
|
||||
AddFile(cfg, name, "dll;xml;pdb;exe", @"..\..\Bin\netstandard2.0", @"lib\netstandard2.0");
|
||||
AddFile(cfg, name, "dll;xml;pdb;exe", @"..\Bin", @"lib\net45");
|
||||
AddFile(cfg, name, "dll;xml;pdb;exe", @"..\Bin\netstandard2.0", @"lib\netstandard2.0");
|
||||
|
||||
if (name == "XCode") AddFile(cfg, null, "*.ps1", @"tools", @"tools");
|
||||
}
|
||||
|
||||
ms = new MemoryStream();
|
||||
cfg.Save(ms);
|
||||
File.WriteAllBytes(specFile, ms.ToArray());
|
||||
|
||||
//var pack = "pack {0} -IncludeReferencedProjects -Build -Prop Configuration={1} -Exclude **\\*.txt;**\\*.png;content\\*.xml";
|
||||
// *\\*.*干掉下级的所有文件
|
||||
var pack = "pack {0} -IncludeReferencedProjects -Exclude **\\*.txt;**\\*.png;*.jpg;*.xml;*\\*.*";
|
||||
var pack = "pack {0} -IncludeReferencedProjects -Exclude **\\*.txt;**\\*.png;*.jpg";
|
||||
Console.WriteLine("打包:{0}", proj);
|
||||
//"cmd".Run("/c del *.nupkg /f/q");
|
||||
foreach(var item in ".".AsDirectory().GetAllFiles("*.nupkg"))
|
||||
{
|
||||
Console.WriteLine("删除 {0}", item);
|
||||
|
@ -107,10 +129,42 @@ namespace NewLife.Reflection
|
|||
}
|
||||
}
|
||||
|
||||
//static ManifestDependency _md;
|
||||
static void AddFile(Manifest cfg, String name, String exts, String src, String target)
|
||||
{
|
||||
exts = exts.Split(";").Select(e=>name + "." + e).Join(";");
|
||||
foreach(var item in src.AsDirectory().GetAllFiles(exts))
|
||||
if (!name.IsNullOrEmpty()) exts = exts.Split(";").Select(e=>name + "." + e).Join(";");
|
||||
var fs = src.AsDirectory().GetAllFiles(exts).ToList();
|
||||
//XTrace.WriteLine("目录:{0} 文件:{1}", src.AsDirectory().FullName, fs.Count);
|
||||
if(fs.Count == 0) return;
|
||||
|
||||
var dgs = cfg.Metadata.DependencySets;
|
||||
var dg = new ManifestDependencySet();
|
||||
switch(target.Substring(@"\"))
|
||||
{
|
||||
case "net20": dg.TargetFramework = ".NETFramework2.0"; break;
|
||||
case "net40": dg.TargetFramework = ".NETFramework4.0"; break;
|
||||
case "net45": dg.TargetFramework = ".NETFramework4.5"; break;
|
||||
case "netstandard2.0": dg.TargetFramework = ".NETStandard2.0"; break;
|
||||
}
|
||||
|
||||
dg.Dependencies = new List<ManifestDependency>();
|
||||
|
||||
/*if(_md == null)
|
||||
{
|
||||
var md = new ManifestDependency();
|
||||
md.Id = "NewLife.Core";
|
||||
md.Version = "7.0.6706.20578";
|
||||
md.Exclude = "Build,Analyzers";
|
||||
|
||||
_md = md;
|
||||
dg.Dependencies.Add(md);
|
||||
}*/
|
||||
|
||||
if(!dg.TargetFramework.IsNullOrEmpty()) dgs.Add(dg);
|
||||
|
||||
XTrace.WriteLine("目录:{0} 框架:{1} 文件:{2}", src, dg.TargetFramework, fs.Count);
|
||||
|
||||
foreach(var item in fs)
|
||||
{
|
||||
var mf = new ManifestFile();
|
||||
mf.Source = item.FullName;
|
||||
|
|
Loading…
Reference in New Issue