.NET Core中创建和使用NuGet包的示例代码

在.NET Core的项目中,如果我们要在项目中引用其它DLL文件,不建议直接在项目引用中添加DLL文件(虽然在.NET Core项目中也可以这么做),建议是去直接下载DLL文件所属的NuGet包。这样最大的好处是我们可以将要引用DLL文件的所有依赖文件也一起引入到项目中,这样保证了引用文件的完整性,让其可以正确地运行。

下面我们通过一个.NET Core类库项目和一个ASP.NET Core项目,来演示怎么发布一个NuGet包,并在项目中引用该NuGet包。

首先我们新建一个.NET Core类库项目"Custom.Library.StringUtils",它包含一个简单的字符串工具类"StringHelper",用来做简单的字符串处理:

using System;
using Newtonsoft.Json;

namespace Custom.Library.StringUtils
{
 /// <summary>
 /// 字符串工具类
 /// </summary>
 public static class StringHelper
 {
  /// <summary>
  /// 将字符串转换为大写
  /// </summary>
  /// <param name="text">字符串</param>
  /// <returns>大写的字符串</returns>
  public static string GetUpperString(string text)
  {
   return text.ToUpper();
  }

  /// <summary>
  /// 将一个对象转换为json字符串
  /// </summary>
  /// <param name="jsonObject">对象</param>
  /// <returns>json字符串</returns>
  public static string ToJson(object jsonObject)
  {
   return JsonConvert.SerializeObject(jsonObject);
  }
 }
}

注意为了演示我们这个.NET Core类库项目还引用了其它NuGet包,我们在项目中引用和使用了著名的json处理NuGet包:Newtonsoft.Json

接下来我们要把类库项目"Custom.Library.StringUtils"发布为一个NuGet包。

首先由于我们在项目中写了很多<summary>注释,我们肯定希望其它的.NET Core项目引用了我们的NuGet包后,也能得到这些<summary>的提示,所以我们要在项目属性(Properties)上做一些设置:

在项目的属性上,我们选中Build页面,这里有两个地方要进行设置,首先由于我们是要在发布的NuGet包中生成XMLdocumentation文件,来包含<summary>注释,所以我们要将Configuration下拉框选择为All Configurations,这样我们可以在发布(Release)时也生成XMLdocumentation文件,而不仅仅是在调试(Debug)时才生成。然后我们还要确保XML documentation file这个复选框是勾上的,这样当我们的.NET Core类库项目发布后才会生成对应的XML documentation文件:

其次每个NuGet包其实都有版本号,我们可以在Package页面,通过Package version来设置当前NuGet包的版本号为1.0.0,如下所示:

然后我们就可以发布我们的.NET Core类库项目"Custom.Library.StringUtils"为NuGet包了,在项目上点击发布(Publish):

在弹出的配置窗口中选择一个发布目录,这里我们选择为本地计算机目录"C:\Local nuget repository",这个目录也会作为我们后面本地NuGet包管理器的source,实际上我们还可以选择一台远程计算机的共享目录(例如\\192.168.1.105\Remote nuget packages这种网络共享目录)作为NuGet包的source目录,这样如果我们的开发团队人员是在一个局域网中,就可以让每个开发人员的Visual Studio从局域网的共享目录中获取需要的NuGet包了。

点击发布(Publish)后,我们可以在目录"C:\Local nuget repository"下看到,类库项目生成的NuGet文件就已经存在了:

注意生成的NuGet文件名中是包含版本号的,例如现在如果我们在项目属性(Properties)中的Package页面上,将Package version改为2.0.0,如下所示:

然后再发布.NET Core类库项目,我们可以看到在发布目录"C:\Local nuget repository"下会再生成一个NuGet文件,这次版本号是2.0.0:

接下来我们就要在另外一个ASP.NET Core项目中来引用我们创建的NuGet包了,为此,我们新建一个ASP.NET Core项目"AspNetCore3000Message"。

首先我们要配置Visual Studio中寻找NuGet包的source,在Visual Studio中选择Tools > NuGet Package Manager > Package Manager Settings

然后在弹出窗口中选中Package Sources页面,然后点击加号新建一个NuGet包source,名称(Name)为"Local nuget package",路径(Source)为我们前面.NET Core类库项目的发布目录"C:\Local nuget repository",如下所示:

点击OK按钮后,我们就将一个本地目录设置为了Visual Studio中NuGet包管理器的source了,就像前面所说我们还可以将一台远程计算机的共享目录作为source,这样开发团队人员的Visual Studio都可以从该共享目录中获取NuGet包了。

现在我们在ASP.NET Core项目"AspNetCore3000Message"中,打开NuGet包管理器:

然后,我们将右上角的Package source下拉框选择为All,接着在搜索框中输入我们前面发布的.NET Core类库项目名"Custom.Library.StringUtils",就可以找到我们发布的NuGet包了,由于我们前面发布了两个版本到发布目录"C:\Local nuget repository",所以这里显示NuGet包的版本也有两个"1.0.0"和"2.0.0",另外由于我们在.NET Core类库项目"Custom.Library.StringUtils"中引用了Newtonsoft.Json这个NuGet包,所以我们这里看到在Dependencies下面显示我们的NuGet包还依赖于Newtonsoft.Json,这样在安装我们的NuGet包Custom.Library.StringUtils时,也会下载和安装Newtonsoft.Json这个NuGet包,保证了所有依赖的DLL文件都被引用到了ASP.NET Core项目"AspNetCore3000Message"中:

这里我们选择安装"2.0.0"版本:

之后我们就可以在ASP.NET Core项目中使用.NET Core类库项目中的StringHelper类了,并且可以看到<summary>注释是成功显示的:

参考文献:

How to include XML documentation file in NuGet package built from a project file?

到此这篇关于.NET Core中创建和使用NuGet包的示例代码的文章就介绍到这了,更多相关.NET Core 创建和使用NuGet包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ASP.NET MVC学习之NuGet在VS中的运用浅谈

    为什么要使用NuGet 简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery.Newtonsoft.Json.log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极.当然网上一些我们常用的类库更新频率不是很高而且即便出了新版本我们也没必要总是保持最新,故这点对我们的帮助比较有限,个人认为N

  • .NET Core中创建和使用NuGet包的示例代码

    在.NET Core的项目中,如果我们要在项目中引用其它DLL文件,不建议直接在项目引用中添加DLL文件(虽然在.NET Core项目中也可以这么做),建议是去直接下载DLL文件所属的NuGet包.这样最大的好处是我们可以将要引用DLL文件的所有依赖文件也一起引入到项目中,这样保证了引用文件的完整性,让其可以正确地运行. 下面我们通过一个.NET Core类库项目和一个ASP.NET Core项目,来演示怎么发布一个NuGet包,并在项目中引用该NuGet包. 首先我们新建一个.NET Core

  • IDEA 中创建Spring Data Jpa 项目的示例代码

    一.IDEA 创建工程 使用IDEA 创建工程的过程,使用文字做简单描述. 选择工程类别[Spring Initializr]. 设置工程的元数据[Metadata],根据自己的情况填写即可. 设置工程的依赖:在[Web]中选择"Spring Web";在[SQL]中选中"Spring Data JPA"."Spring Data JDBC"."MySQL Driver"."JDBC API".选中的可能有

  • 在.net core中实现字段和属性注入的示例代码

    简单来说,使用Ioc模式需要两个步骤,第一是把服务注册到容器中,第二是从容器中获取服务,我们一个一个讨论并演化.这里不会考虑使用如Autofac等第三方的容器来代替默认容器,只是提供一些简单实用的小方法用于简化应用层的开发. 将服务注入到容器 asp.netcore官方给出的在容器中注册服务方法是,要在Startup类的ConfigureServices方法中添加服务,如下所示: public void ConfigureServices(IServiceCollection services)

  • Asp.Net Core中创建多DbContext并迁移到数据库的步骤

    在我们的项目中我们有时候需要在我们的项目中创建DbContext,而且这些DbContext之间有明显的界限,比如系统中两个DbContext一个是和整个数据库的权限相关的内容而另外一个DbContext则主要是和具体业务相关的内容,这两个部分彼此之间可以分开,那么这个时候我们就可以在我们的项目中创建两个不同的DbContext,然后分别注入进去,当然这两个DbContext可以共用一个ConnectionString,也可以分别使用不同的DbContext,这个需要根据不同的需要来确定,在我们

  • iOS中创建表格类视图WBDataGridView的实例代码

    项目中创建表格, 引用头文件 #import "WBDataGridView.h" - (void)viewDidLoad{ [superviewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColorwhiteColor]; CGFloat margin = 10.f; CGFloat width = self.view.frame.size.wi

  • SpringBoot中整合Shiro实现权限管理的示例代码

    之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧 一.简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 三个核心组件: 1.Subject 即"当前操作用户".但是,在 Shi

  • nodejs中使用HTTP分块响应和定时器示例代码

    在本例中,将要创建一个输出纯文本的HTTP服务器,输出的纯文本每隔一秒会新增100个用换行符分隔的时间戳. require('http').createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); var left = 10; var interval = setInterval(function() { for(var i = 0; i< 100; i++) { res.write

  • Python中xml和dict格式转换的示例代码

    在做接口自动化的时候,请求数据之前都是JSON格式的,Python有自带的包来解决.最近在做APP的接口,遇到XML格式的请求数据,费了很大劲来解决,解决方式是:接口文档拿到的是XML,在线转化为json格式(目的是拿到xml数据的模板),存放到json文件中,根据接口名去提取. github原文介绍:使用XML的Python模块感觉就像您在使用JSON 链接:https://github.com/martinblech/xmltodict 下载xmltodict(pip install xml

  • jstree中的checkbox默认选中和隐藏示例代码

    jstree复选框自定义显示隐藏和初始化默认选中 首先需要配置 Checkbox plugin "plugins" : ['checkbox'] 设置默认选中状态(checkbox 选中) state: {checked: true} $.jstree.defaults.checkbox.tie_selection 示例: $('#demo_tree').jstree({ "core" : { 'data': [ { "id" : "a

  • spring中使用mybatis实现批量插入的示例代码

    有3种实现方式:foreach,spring事务,以及ExecutorType.BATCH. 1. foreach方式 这种方式实际是对SQL语句进行拼接,生成一个长长的SQL,对很多变量进行绑定.如果数据量不大(1000个以内),可以用这种方式.如果数据量太大,可能数据库会报错. 定义接口 public interface StudentMapper05 { public void insertStudent(List<Student> studentList); } 定义mapper 适用

随机推荐