10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)

目录
  • 前言
  • 创建类库方法
  • NuGet发布到服务器
    • 1、登录NuGet账号获取API keys
    • 2、下载Nuget.exe并发布项目
    • 3、NuGet发布到服务器
  • 参考文献

前言

  NuGet就是一个包(package)管理平台,确切的说是 .net平台的包管理工具,它提供了一系列客户端用于生成,上传和使用包(package),以及一个用于存储所有包的中心库。

  对于一个现代化的开发平台,建立一种让开发者创建,分享与使用可复用代码的机制是十分必要的。这种“可复用代码”被打包后的文件通常被称作“包”(package),

对于.NET(包括 .NET Core)平台来说这个机制的实现就是NuGet平台。

  NuGet的实现均为开源项目,包括了客户端工具,服务器,官方网站以及各语言的文档等。

  NuGet包的本质是一个以nupkg为后缀的zip压缩文件(你可以将后缀改为.zip后解压查看里面的内容),其中包含了编译后的Dll文件以及其他相关文件。

            图1:显示nuget包从创建,上传到被使用的流程

对于引用大家都会使用,但是对于创建NuGet引用就不怎么会了,我们下面就介绍怎么打包dll类库到NuGet平台进行引用。

创建类库方法

我们首先创建一个可调用的类库,以“繁简体相互转换”为例,当然你也可以创建其他的,比如获取配置文件、http请求帮助类等。

这里使用的环境是vs2019, .NET Core2.1,使用.NET也可以,这里可根据自己的使用环境创建。

注意:类库是什么环境,引用也需要什么环境。(.NET Core和.NET不能相互混用)。

创建一个.NET Core类库项目,命名为“XiongZeUtils”(自定义命名),然后在类库项目下创建一个繁简体项目转换的类,命名为“xzUtils”(自定义)。

注意,繁简体相互转换需要现在NuGet引入包ChineseConverter,然后在类里面引用using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter,如下:

创建完成后记得需要先编译生成dll文件

using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using System;

namespace XiongZeUtils
{
    public static class xzUtils
    {
        /// <summary>
        /// 简体转换为繁体
        /// </summary>
        /// <param name="str">简体字</param>
        /// <returns>繁体字</returns>
        public static string GetTraditional(string str)
        {
            string r = string.Empty;
            r = ChineseConverter.Convert(str, ChineseConversionDirection.SimplifiedToTraditional);
            return r;
        }
        /// <summary>
        /// 繁体转换为简体
        /// </summary>
        /// <param name="str">繁体字</param>
        /// <returns>简体字</returns>
        public static string GetSimplified(string str)
        {
            string r = string.Empty;
            r = ChineseConverter.Convert(str, ChineseConversionDirection.TraditionalToSimplified);
            return r;
        }
    }
}

创建完成后记得需要先编译生成dll文件

NuGet发布到服务器

1、登录NuGet账号获取API keys

官网地址:https://www.nuget.org/

如果你有Microsoft 帐户,直接登录即可。如果没有则需去创建一个。

NuGet登录快捷入口https://www.nuget.org/users/account/LogOn

(注册地址入口比较难找,下面快捷入口直接点击即可注册)

NuGet注册账号快捷入口https://signup.live.com/?lic=1

备用方案:

NuGet.org 上的个人帐户:https://docs.microsoft.com/en-us/nuget/nuget-org/individual-accounts

获取您的 API 密钥:https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-visual-studio?tabs=netcore-cli

获取您的 API 密钥

1.登录您的 nuget.org 帐户或创建一个帐户(如果您还没有)。

有关创建帐户的更多信息,请参阅个人帐户

2.选择您的用户名(在右上角),然后选择API Keys。

3.选择Create,为您的密钥提供一个名称,选择Select Scopes > Push。为Glob 模式输入 *,然后选择Create。(有关范围的更多信息,请参见下文。)

4.创建密钥后,选择复制以在 CLI 中检索您需要的访问密钥:

5.重要提示:将您的密钥保存在安全位置,因为您以后无法再次复制该密钥。如果返回 API 密钥页面,则需要重新生成密钥才能进行复制。如果您不想再通过 CLI 推送包,您也可以删除 API 密钥。

范围允许您为不同的目的创建单独的 API 密钥。每个密钥都有其到期时间范围,并且可以限定为特定的包(或 glob 模式)。每个键也适用于特定操作:推送新包和更新、仅推送更新或下架。通过范围界定,您可以为为您的组织管理包的不同人员创建 API 密钥,以便他们仅拥有所需的权限。有关更多信息,请参阅作用域 API 密钥

2、下载Nuget.exe并发布项目

点击下载nuget.exe

https://www.nuget.org/downloads

我这里下载的是5.9.1版本的,版本这里没有特别的要求。

这里只有6M多一点,下载太慢了,我把下载好的放在gitee上,大家直接点击下载解压即可。

下载地址1(git):https://gitee.com/xiongze/nugetexe-file.git

下载地址2(百度网盘):链接: https://pan.baidu.com/s/1cykLq1RH3pqv_dfm9FAFjg   提取码: nhb3

3、NuGet发布到服务器

将下载下来的nuget.exe与刚才新建的类库放在同一目录下。

配置发布信息,并将发布路径指向或拷贝到与刚才新建的类库放在同一目录下。

①、找到vs对应的开发人员命令提示(不能用cmd直接打开)

或者C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools

②命令提示定位到Nuget.exe所在的目录

双击运行Developer Command Prompt for VS 2019cd到项目类库的目录

③通过命令 nuget setapikey xxxxx-xxxx-xxx-xxxx-xxxx-xxxx(我们上面nuget copy的key), 设置API Key

通过命令 nuget setapikeyxxxxx-xxxx-xxx-xxxx-xxxx-xxxx , 设置API Key;

④生成xxxx.nuspec文件

nuspec是NuGet将项目打包成nupkg的输入文件,可以通过nuget spec命令产生。
通过命令 nuget spec 生成xxxx.nuspec文件;

⑤NuGet发布到服务器

通过命令 nuget.exe push xxxxx.nupkg -Source https://www.nuget.org ,将NuGet发布到服务器。

打包成功后,这里需要等待3-10分钟左右,打包成功后nuget就能查询到我们打包的引用了,如果没有的多等待一下。

使用NuGet包

我们这个时候就可以在NuGet里面搜索到我们的类库了,我们引入进来使用一下。

在项目中引入我们的nuget包,然后调用得到下面内容

参考文献

[NET,C# ] Nuget包发布流程:https://www.52pojie.cn/thread-1434899-1-1.html

NuGet是什么:https://zhuanlan.zhihu.com/p/36207092

nuget官网地址:https://www.nuget.org/

到此这篇关于10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)的文章就介绍到这了,更多相关NuGet打包类库引用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#关联自定义文件类型到应用程序并实现自动导入功能

    这几天开发遇到一个需求: 将自定义文件后缀添加默认图标双击 自定义的文件后缀可以自动关联到指定的应用程序并自动打开 上述第一.二两点其实是一个需求,本质是和注册表有关的操作,在注册表中写入默认图标.默认文件后缀.指定打开文件,一旦明白这个思路代码就非常清晰了. 代码中我们写入了两个注册表. 第一个结构如下图所示,其中DefaultIcon定义的是默认图标地址,Command中存放的是指定识别的软件的运行exe路径. 第二个注册表如下图所示,将默认文件后缀和第一个注册表进行关联,这样就可以进行识别

  • Unity之Luaframework框架lua调用C#方法

    前言 最近,新来的同事写接口,需要知道lua怎么调用C#脚本,趁这个机会也给大家分享一下.道理我也不多少,直接上干货. 框架介绍 本项目采用luaframework+ugui,详情咨询度娘. 框架: 创建C#类 首先写个C#脚本,这个脚本里的方法是我们需要在lua中调用的,这里需要调用的方法命名为ShirlnDebug using System.Collections; using System.Collections.Generic; using UnityEngine; public cla

  • C# 总结QueueUserWorkItem传参几种方式案例详解

    最近在学习citrix的xenserver6.2的源代码,发现多处用到System.Threading命名空间下的ThreadPool.QueueUserWorkItem方法: public static bool QueueUserWorkItem(WaitCallback callBack, object state); publicstaticbool QueueUserWorkItem(WaitCallback callBack); 参数WaitCallback 本身是一个delegat

  • C# 本地函数与 Lambda 表达式详细介绍

    目录 1.C# 本地函数与 Lambda 表达式 2.Lambda 表达式 3.本地函数 4.那么,局部函数的目的是什么? 1.C# 本地函数与 Lambda 表达式 C# 局部函数通常被视为 lambda 表达式的进一步增强.虽然功能是相关的,但也存在重大差异. Local Functions 是嵌套函数]功能的 C# 实现.一种语言在支持 lambdas 之后获得对嵌套函数的支持几个版本是有点不寻常的.通常情况相反. Lambda 或一般的一流函数需要实现未在堆栈上分配且生命周期与需要它们的

  • C#9特性record 类型、模式匹配、init 属性详情

    目录 C#的特性record 类型.模式匹配.init 属性 一.record 类型 二.模式匹配(Pattern Matching) 三.属性的 init 访问器 C#的特性record 类型.模式匹配.init 属性 一.record 类型 record ,我还是用原词吧,我知道有翻译为"记录类型"的说法.只是,只是,老周老觉得这不太好听,可是老周也找不出更好的词语,还是用回 record吧. record 是引用类型,跟 class 很像(确实差不多).那么,用人民群众都熟悉的

  • C# ThreadPool之QueueUserWorkItem使用案例详解

    先看代码: //设置可以同时处于活动状态的线程池的请求数目. bool pool = ThreadPool.SetMaxThreads(8, 8); if (pool) { ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1")); ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2")); ThreadPool.Que

  • 10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)

    目录 前言 创建类库方法 NuGet发布到服务器 1.登录NuGet账号获取API keys 2.下载Nuget.exe并发布项目 3.NuGet发布到服务器 参考文献 前言 NuGet就是一个包(package)管理平台,确切的说是 .net平台的包管理工具,它提供了一系列客户端用于生成,上传和使用包(package),以及一个用于存储所有包的中心库. 对于一个现代化的开发平台,建立一种让开发者创建,分享与使用可复用代码的机制是十分必要的.这种"可复用代码"被打包后的文件通常被称作&

  • 小白2分钟学会Visual Studio如何将引用包打包到NuGet上

    前言 之前我们说10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#),过程有些许繁琐,并且需要有一定的基础. 怎么办呢,不慌,看法宝. 两步完成打包上传操作:在类库方法创建成功后,我们的打包只需要两步就可以完成,并且都是点点点的操作. 两步完成打包上传操作 第一步:打包 编写好程序后,点击属性配置包的一些必要信息. 还是以"繁简体相互转换"为例.简单在重复一遍,看过之前的可以不需要看这一步. 我们首先创建一个可调用的类库,以&

  • 10分钟学会VS NuGet包私有化部署

    目录 前言 什么是BaGet 搭建私有化BaGet服务器 使用私有化程序包 前言 我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的. 命令版本:10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#) web版本(推荐):小白2分钟学会Visual Studio将引用包打包到NuGet上 其实官方也提供了私有化部署(NuGet.Server.ProGet.MyGe等),我们就来基于BaGet进

  • 10分钟学会使用python实现人脸识别(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确性比较高的一种. 一.首先 梳理一下实现人脸识别需要进行的步骤: 流程大致如此,在此之前,要先让人脸被准确的找出来,也就是能准确区分人脸的分类器,在这里我们可以用已经训练好的分类器,网上种类较全,分类准确度也比较高,我们也可以节约在这方面花的时间. 既然用的是python,那自然少不了包的使用了,在

  • 10分钟学会js处理json的常用方法

    一.json定义 JSON ( JavaScript Object Notation) ,它是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串.数字.也可以是另一个数组或对象) JSON 语法是 JavaScript 对象表示法语法的子集. 数据在名称/值对中.数据由逗号分隔.花括号保存对象.方括号保存数组 JSON 值可以是:数字(整数或浮点数).字符串(在双引号中).逻

  • 10分钟学会写Jquery插件实例教程

    有很多朋友都用过jquery插件,但是很少有人自己动手写过jQuery插件,本文就以实例形式简单叙述了jQuery插件的实现方法.分享给大家供大家参考之用.具体方法如下:   具体而言,其实就是把一些常用.实用.通用的功能封装起来而以,简单的来讲就是把这些代码放在一个方法里面,可以达到重复使用的效果,这样就可以不需要每次要用此功能的时候都去重新写一遍.   现在Jquery里面加入了插件的概念,只要按照它特定的格式当作平时写function一样去写就可以了,不虽然搞得太复杂的.信不信由你们,反正

  • 10分钟学会docker

    本文大概耗时10分钟. 你将会看到以下内容: 为什么要用docker docker几个概念 如何运行docker container 如何build image 本文假定你有以下基础: 1.linux命令行(见参考链接) 2.必要的英语词汇 为什么要用docker? 在探讨docker能为我们带来的好处时,我们先得明白docker是什么.docker官网是这样描述的"Docker is the world's leading software container platform."由

  • 详解10分钟学会vue滚动行为

    滚动行为 什么是路由的滚动行为 当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样 注意: 这个功能只在 HTML5 history 模式下可用.在这个模式下我们需要启动一个服务 我们用scrollBehavior 方法来做路由滚动 scrollBehavior 方法接收 to 和 from 路由对象.第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用 下面我们做一个小案例来了解一下 效果 <

  • 在Visual Studio中用C++语言创建DLL动态链接库图文教程

    什么是DLL(动态链接库)? DLL是一个包含可由多个程序同时使用的代码和数据的库.例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数.因此,每个程序都可以使用该DLL中包含的功能来实现"打开"对话框.这有助于促进代码重用和内存的有效使用.这篇文章的目的就是让你一次性就能了解和掌握DLL. 为什么要使用DLL(动态链接库)? 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可以将它构造成相对独立的功能模块并在之后的项目中重复

  • Visual Studio 2022 的安装和创建C++项目(图文教程)

    目录 1.下载 2.安装 3.接下来就是创建项目 4.如果你想添加多个.cpp,并且想要运行成功,可以右键.cpp.属性, 下面我们来讲一下如何下载安装VS 2022并且创建C++项目. 1.下载 首先,我们来到VS的微软官网下载地址:https://visualstudio.microsoft.com/zh-hans/vs/ 然后点击下图我画红圈的这个版本:Visual Studio Community(VS 社区版)这个版本是不要钱的,社区版其实就是个人版,在开发.调试上有一些限制,下面两个

随机推荐