本文告诉大家如何编写在编译过程修改打包文件 在项目文件的相同文件夹可以放一个 nuspec 用来告诉 VisualStudio 如何打包 现在尝试创建一个项目 NearjerbetearDeeyitoo ,在这个项目用来告诉大家如何使用替换占位符的方法 在开始做之前需要告诉大家为什么需要使用这个方法 因为写的 nuspec 文件是可以保持不动,在多个项目使用相同的一个 nuspec 文件,但是对不同的项目使用定制的方式 先来创建一个 nuspec 文件,把这个文件随意一个文件名ReresouJesou.nuspec,如果在 VisualStudio 使用某个 nuspec 文件打包,就需要在项目文件添加下面代码 在NuspecFile就需要指定nuspec文件所在的路径,这里用的是相对的路径。最后设置IsTool只是用来告诉安装 Nuget 的程序,这是一个工具 nuget 包没有引用。 现在修改一下 ReresouJesou.nuspec 文件,添加下面代码 <?xml version="1.0" encoding="utf-8"?
双击 Path 添加 c:\lindexi 就可以了 如果之前已经设置了环境变量,请尝试更新一下 NuGet 请使用下面命令 nuget update -self 在 NuGet 包显示图标的原理是在 nuspec 通过压缩工具打开 Lindexi.1.0.0.nupkg 文件,因为 nupkg 文件是一个压缩文件,可以通过压缩工具解压,在解压之后可以看到下面的文件 通过 URL 设置图标 打开 Lindexi.nuspec 文件,在之前的 NuGet 支持的是通过 URL 的方法设置图标 可以从easyicon找到一个好看的图标 然后通过图床将图标上传到网上,在 Lindexi.nuspec 文件添加下面代码 < iconUrl> 这里的 http://image.acmx.xyz/lindexi%2F2019427172218870 就是我上传的图标,添加在 metadata 里面,大概看起来的 Lindexi.nuspec > <package xmlns="http://schemas.microsoft.com/packaging/2013/05/<em>nuspec</em>.xsd"> <metadata> <id>Lindexi
(毕竟 nuspec 文件没有 .csproj 和 .targets 文件强大而又有扩展性。) 不过,我更愿意分成三类来说明: nuspec 属性 当然,这部分的属性也是在 csproj 中使用的,是为了生成 nuspec 文件。 -- 以下属性都是为了使用单独的 nuspec 文件而准备的;如果不使用 nuspec 文件,通常无需设置这些属性。 --> <! -- 如果需要额外手工编写 nuspec 文件,那么使用此属性指定绝对或相对路径。 项属性 文件 为了脱离 nuspec 文件来打包,csproj 中需要对特殊用途的文件设置特别的 NuGet 属性。
我们来看一个更复杂的例子,这是直接在编写一个 NuGet 的 nuspec 文件: var xmlns = "http://schemas.microsoft.com/packaging/2012/06 /nuspec.xsd"; var root = new XElement("package", new XAttribute(XNamespace.Xmlns.ToString(), xmlns )); var document = new XDocument(root); document.Save(@"C:\Users\walterlv\Desktop\Walterlv.Demo.nuspec NETStandard2.0"] = new[] { ("MSTest.TestFramework", "1.2.0", "Build,Analyzers"), } }; 生成的 nuspec 文件非常像 NuGet 的原生 nuspec 文件。
从零开始打包 Nuget 只需要不到 3 分钟,其中有 2.9 分钟都是在等待 VisualStduio 卡 先来回顾一下之前是如何制作一个 Nuget 包的,首先通过 Nuget 创建一个空白的 nuspec 文件 nuget.exe spec 然后打开这个 nuspec 文件,添加自己需要的内容,需要包括 Nuget 的 id 和 作者、描述这些,请看代码 <? > <package xmlns="http://schemas.microsoft.com/packaging/2013/05/<em>nuspec</em>.xsd"> <metadata> <id>lindexi 如果想要自己定义一个 nuget 包的 id 和 AssemblyName 不相同,可以通过修改 PackageId 的方式,具体请看项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 这时就可以看到刚才快速创建的包 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - walterlv 课件 ?
smms.nuspec 这个可以用文本打开,里面会自动替换 里面有 <?xml version="1.0"? 作者代为AssemblyCompany id代为Assembly名 version代为AssemblyVersion description代为AssemblyDescription 做完我们文本打开 *.nuspec 问题: 删除示例 nuspec 值。 说明: Tags 的值“Tag1 Tag2”是示例值,应将其删除。 解决方案: 请替换为适当的值或删除它,然后重新生成程序包。 问题: 删除示例 nuspec 值。
pack 基于指定的 nuspec 或项目文件创建 NuGet 程序包。 push 将程序包推送到服务器并进行发布。 sources 可以管理位于 %AppData%\NuGet\NuGet.config 的源列表 spec 为新程序包生成 nuspec。 如果此命令在项目文件(.csproj、.vbproj、.fsproj)所在的文件夹中运行,则它将创建已标记 化的 nuspec 文件。 update 将程序包更新到最新的可用版本。
可以使用下面代码 msbuild /t:pack /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg 如果使用 nuget 打包,如对应的 xx.nuspec 可以使用下面代码 nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg NuGet 符号服务器 How to publish
dotnet pack Foo.csproj --include-symbols -p:SymbolPackageFormat=snupkg 使用 nuget 命令行的方法,请看下面代码,请将 Foo.nuspec 替换为你自己需要的打包文件 nuget pack Foo.nuspec -Symbols -SymbolPackageFormat snupkg 使用 msbuild 命令行的方法,请替换为自己项目
可以安装 nuget package explorer ,或者点击安装 SublimeText 或 记事本,用来编辑文件 文件夹方式 一个可以解析的 nuget 包是需要包括指定的一些文件的,最主要就是.nuspec 文件,其他的文件都不是必要的 下面来告诉大家做一个空白的 nuget 包 创建空白的 nuget 包 首先创建一个空白文件,文件的后缀名是 nuspec ,文件名就是打包名 下面我创建 lindexi.nuspec 这个将会打出空白的 nuget 包 使用 SublimeText 打开 lindexi.nuspec 输入下面内容 <? 现在在 lindexi.nuspec 相同文件夹创建一个文件夹 build 注意大小写,现在的文件看起来就是这样 ? 如果使用上面的方法会发现自己的资源是找不到,包括 xaml 也是无法编译,在 xaml 里面引用资源也是找不到,不过这些问题我都会在 SourceYard 解决 原理 刚才大家可以看到我没有在 nuspec
HehuhallqaLinearjeebar.Source.1.0.0.nupkg 文件,但是我没有 HehuhallqaLinearjeebar.Source 仓库,所以提示不能上传 此时可以通过在 .nuspec 这样多个库可以使用相同仓库,上面代码需要写到 package 的 metadata 才能使用 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/<em>nuspec</em>.xsd </version> <authors>lindexi</authors> <description>Sample exists only to show a sample .<em>nuspec</em>
接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"? > <package xmlns="http://schemas.microsoft.com/packaging/2013/05/<em>nuspec</em>.xsd"> <metadata> \x86\bin\**" target="x86\bin" /> </files> </package> 开始打包 nuget pack grpc-1.20.0-v141.nuspec 现在,在档期按目录下面生成了一个叫
smms.csproj所在文件夹A:\smms\smms 进入文件夹命令 首先进入盘,我是在A盘, a: 然后进入文件夹 cd smms/smms 我们打包 首先 nuget spec smms.nuspec 作者代为AssemblyCompany id代为Assembly名 version代为AssemblyVersion description代为AssemblyDescription 做完我们文本打开 *.nuspec 改releaseNotes、tags 如果没有修改,我们打包 nuget pack *.csproj 问题: 删除示例 nuspec 值。 问题: 删除示例 nuspec 值。
STEP5 产生并修改nuspec nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec命令产生。 用记事本打开NuGetTest.nuspec文件,注意里面的$xxx$宏,这些就是引用了AssemblyInfo.cs中的设置值,在编译产生package的时候,会使用AssemblyInfo.cs中的相应值进行替换 完成编辑后,我们的nuspec文件如下: <?xml version="1.0"?
nuspec文件是包含程序包元数据的XML清单。此清单可用于构建包装并向消费者提供信息。清单始终包含在包装中。 可以在微软文档中(https://docs.microsoft.com/en-us/nuget/reference/nuspec)找到有关nuspec的更多详细信息 发布包到公共Host 创建 API
,特性的作用和一些容易被问的问题 最近我在把项目文件修改为 VisualStudio 2017 的格式,请看从以前的项目格式迁移到 VS2017 新项目格式,这时虽然可以自动打包,但是我还是需要生成 Nuspec 文件,所以本文就是记录我在从 csproj 文件创建 nuspec 文件遇到的转换 实际就是做将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 - walterlv http://www.w3.org/2001/XMLSchema"><Id>lindexi.MVVM.Framework</Id></NuspecMetadata> 这就是序列类的方法,现在看起来和 nuspec 文件还不一样,所以下面告诉大家如何修改 设置属性别名 可以看到 nuspec 文件的属性都是使用小写,如 <metadata> <! { [XmlElement("id")] public string Id { get; set; } } 设置属性作为 XmlAttribute 在 nuspec
dotnet pack Foo.csproj --include-symbols -p:SymbolPackageFormat=snupkg 使用 nuget 命令行的方法,请看下面代码,请将 Foo.nuspec 替换为你自己需要的打包文件 nuget pack Foo.nuspec -Symbols -SymbolPackageFormat snupkg 使用 msbuild 命令行的方法,请替换为自己项目
为了更好的使用,可以结合脚本来快速打包,以之前的一个计算字段封装为例将其打包成 NuGet 包推送到 Nexus 中 目录结构如下 首先新建配置一个 .nuspec 模板,根据需要修改库的相关信息,nuspec /Devops.Common.EvalSDK/Devops.Common.EvalSDK.csproj" #包配置 nuspec_path="Devops.Common.EvalSDK.nuspec " #nuspec path , relative csproj path nuspec_path_relative_csproj=".. /pack/Devops.Common.EvalSDK.nuspec" #git pull #删除旧版本 rm -f nupkg_pakcage_name cd ${current_dir} *</version>|<version>'${package_version}'</version>|g' ${nuspec_path} echo pack ${nupkg_pakcage_name
\nuget sepc 生成.nuspec配置文件,用于nuget的配置项 然后运行.\nuget pack packageName 发布成nuget包 3. 注意 此类库更新版本之后,再打包成.nuget文件,是不会重新生成.nuspec文件。 PropertyGroup> </Project> 此处需要注意的时候,默认创建的dll是没Version, AssemblyVersion, FileVersion节点,需要自己手动添加;以及在更新版本后 .nuspec
DotNetCliTool> 这里 Command 的 Name 就是 nugetfix 中的命令,而 EntryPoint 就是入口文件,请将代码修改为你需要的代码 返回 packing 文件夹,创建 nuspec 文件,我期望阅读本文的小伙伴都知道 nuspec 文件应该如何写,我不会告诉大家细节 <? > <package xmlns="http://schemas.microsoft.com/packaging/2012/06/<em>nuspec</em>.xsd"> <metadata> <id>NugetMergeFixTool