1.整理编译好的文件

需要整理的文件包括:dll、lib以及头文件,以opencv 4.6.0为例,文件组织方式如下:(其中opencv.nuspec和opencv.targets为自主创建文件,创建方式及文件内容在本文后面介绍)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
opencv.4.6.0
│ opencv.nuspec

└─build
└─native
│ opencv.targets

├─bin
│ ├─Debug
│ │ hdf5.dll
│ │ opencv_img_hash460d.dll
│ │ opencv_videoio_ffmpeg460_64.dll
│ │ opencv_world460d.dll
│ │ zlib.dll
│ │ zlibwapi.dll
│ │
│ └─Release
│ hdf5.dll
│ opencv_img_hash460.dll
│ opencv_videoio_ffmpeg460_64.dll
│ opencv_world460.dll
│ zlib.dll
│ zlibwapi.dll

├─include
│ └─opencv

└─lib
opencv_img_hash460d.lib
opencv_world460d.lib
opencv_img_hash460.lib
opencv_world460.lib

avatar
其中,bin中放置的是dll文件,include放置的是头文件,lib中放置的是静态链接库。

2.在native目录中创建opencv.targets文件

第一步:进入native文件夹,创建opencv.txt文件
第二步:将opencv.txt重命名为opencv.targets
第三步:输入下列xml内容
opencv.targets文件起到将include和lib文件配置到项目的作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>

<Link>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>

<ItemDefinitionGroup Condition="$(Configuration.IndexOf('Debug')) != -1 ">
<ClCompile>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>opencv_world460d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>

<ItemDefinitionGroup Condition="$(Configuration.IndexOf('Release')) != -1 ">
<ClCompile>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>opencv_world460.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
</Project>

3.在opencv.4.6.0目录中创建opencv.nuspec文件

第一步:进入opencv.4.6.0文件夹,创建opencv.txt
第二步:将opencv.txt重命名为opencv.nuspec
第三步:输入下列xml内容
opencv.nuspec文件记录了库文件的基本信息及依赖信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/01/nuspec.xsd">
<metadata>
<!--ID 包名-->
<id>opencv</id>
<!--版本号-->
<version>4.6.0</version>
<!--标题-->
<title>opencv</title>
<!--作者-->
<authors>noah</authors>
<!--所有者-->
<owners>dztech</owners>
<!--是否需要接受授权-->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!--包的描述信息-->
<description>VS2017 X64 vc141 DEBUG RELEASE</description>
<summary></summary>
<!--版权信息-->
<copyright>Copyright (c) 2020, noah</copyright>
<!--标签-->
<tags>native, C++, noah</tags>
<!--依赖包,没有依赖的情况下可删除该节点-->
<dependencies>
<dependency id="dllname" version="x.x.x" />
</dependencies>
</metadata>
</package>

4.安装nuget.exe

第一步:下载nuget,下载地址:nuget.exe
第二步:将nuget.exe的存放路径添加至环境变量的系统环境Path中(或者将nuget.exe放置在Path中的某个路径下)

5.使用命令创建包并上传到服务器

第一步:进入opencv.4.6.0文件夹,然后按住Shift键同时右击,选择“在此处打开Powershell窗口(S)”,如下图所示
avatar
第二步:执行打包命令

1
nuget  pack  opencv.nuspec

执行后出现如下图所示的信息表示打包成功,同时在opecv.4.6.0文件夹中会生成文件:opencv.4.6.0.nupkg
avatar
avatar
第三步:执行上传命令
其中,-Source的值是包存放到服务器上的地址;-ApiKey为密钥(向服务器管理员索要)

1
nuget  push -Source http://xxx.xxx.xxx.xxx -ApiKey xxxxx opencv.4.6.0.nupkg

如果push过程中出现下图的提示表明网络连接出现了问题
avatar

6.从服务器上删除包

执行命名:

1
nuget delete opencv 4.6.0 –Noninteractive –Source http://xxx.xx.xxx -ApiKey xxxx