测试篇 创建nuget包
创建方式一:nuget.exe
这种方式可以合并多个不同工程的dll到包内
1.下载nuget.exe程序
nuget.exe地址 可以放在任意目录.
2.设置path系统变量
将nuget.exe的目录添加到path变量里.
系统为win10为例,我的电脑-右键-属性-高级系统设置-系统变量-选择path-编辑-将nuget.exe所在目录添加到path变量里.
(右键桌面的计算机)
3.采用基于约定的工作目录的方式创建包
- 创建一个nuget的文件夹
- 里面继续创建个要打包的dll文件夹,比如叫Acad2008nuget
- 然后在Acad2008nuget的目录下面创建nuget包最小的约定的目录,即建立一个lib目录,lib目录里建立要支持的net版本的目录,比如支持net3.5,就创建net35
现在的cad2008里的目录结构: \Acad2008nuget\lib\net35\ - 将要打包的dll文件全部拷贝到net35目录里
- 在cad2008目录下打开cmd或者powershell,
然后运行命令:nuget spec ,会生成一个Package.nuspec文件. - 修改Package.nuspec文件的内容
1 <?xml version="1.0" encoding="utf-8"?>
2 <package>
3 <metadata>
4 <id>JJBox.Acad2008</id>
5 <version>1.0.0</version>
6 <title>Acad.Net API</title>
7 <authors>惊惊</authors>
8 <owners>惊惊</owners>
9 <requireLicenseAcceptance>false</requireLicenseAcceptance>
10 <description>Acad.Net API</description>
11 <summary>它用于Acad开发,内含com的dll,版本见包名</summary>
12 <releaseNotes>The first release.</releaseNotes>
13 <tags>Acad</tags>
14 </metadata>
15 </package>
- 第4行为要创建的包的名字,微软通过它控制上传者和包关联,其他人不给更新此包
- 第5行为版本号,建议采用x.x.x.x这种格式
- 第6行为标题名
- 第7行为作者
- 第8行为dll的所有者
- 第9行为是否要用户同意许可协议
- 第10行为包描述
- 第11行包摘要
- 第12行发行说明
- 第13行为搜索关键词
- 修改完Package.nuspec文件的内容后保存,并在Acad2008nuget目录里运行
nuget pack .\Package.nuspec
生成nuget包.
4.图文教程
回到这个文件夹..........
创建方式二:使用csproj创建
这种方式可以将本工程输出为包
csproj
我们来看看IFox工程的csproj
<Project Sdk="Microsoft.NET.Sdk"> 必须是这个.sdk
<PropertyGroup>
<TargetFrameworks>net35;net40</TargetFrameworks>
<GenerateAppxPackageOnBuild>true</GenerateAppxPackageOnBuild>
<Version>0.1.3</Version>
<Company>InspireFunction</Company>
<Authors>xsfhlzh;vicwjb</Authors>
<Description>基于.NET的Cad二次开发类库</Description>
<Copyright>InspireFunction</Copyright>
<PackageProjectUrl>https://gitee.com/inspirefunction/ifoxcad</PackageProjectUrl>
<RepositoryUrl>https://gitee.com/inspirefunction/ifoxcad.git</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>IFoxCAD;CAD;AutoCad;C#;NET</PackageTags>
<PackageReleaseNotes>Optimize and add multiple functions.</PackageReleaseNotes>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<LangVersion>preview</LangVersion>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
</PropertyGroup>
不同的net版本在此区分,将包生成到不同的文件夹上
<ItemGroup Condition="'$(TargetFramework)' == 'NET35'">
<PackageReference Include="Autocad.NetApi" Version="17.2.0">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'NET40'">
<PackageReference Include="Autocad.NetApi" Version="19.0.0">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
</Project>
生成效果
统一管理
这样就创建完nuget包了.
然后把这个包拷贝到一个专门存放的路径上.
再去vs屎丢丢的nuget管理器的"设置"上面填写一下包源目录,填一下路径,vs就能找到本机的nuget包了..
上传
如果是公司的话,就有一个服务器路径来统一管理.
这个方面另见官方文档: https://docs.microsoft.com/en-us/nuget/what-is-nuget
也可以上传到微软的服务器,但是上传了就很难删除了(管他呢)
上传到 https://www.nuget.org/packages/manage/upload
注册一个微软账号就好了,win10的用户应该都有,然后用户占据包id来控制版本迭代的.
上传到微软之后你就不需要设置一个专门的包位置了,它会自动下载到你的电脑.
(完)