最近了解到.NET Core 项目,引用本地类库DLL的方式有三种

1、非同解决方案下的引用,直接引用,浏览,找到对应的DLL,然后确定引用。

这种方式有个不好的地方就是,如果引用的DLL文件里面,也引用了第三方DLL,那么通过这种方式引用,第三方DLL不会跟着引用进来,需要在项目里面重新又引用一次。

2、同解决方案下,通过项目引用

这种方式,就不需要再同解决方案下, 这样会项目太大,编译较慢,不过不存在上面那种方式的问题;

3、类库生成包,然后站点通过NuGet方式引用。今天重点记录一下这种方式的详细操作过程;

①、新建.Net Core 类库

类库里面新建一个类即可,类里面增加几个属性,只作为测试

类库已经建好,下面开始打包,可以通过nuget命令方式打包,也可以直接选中项目,右键打包即可

a、命令方式:

打开nuget 控制台

输入如下命令

dotnet pack F:\测试项目代码-待删\CoreTest.Library\PigMGT.DB.PigMGT_Stat --output F:\测试项目代码-待删\CoreTest.Library\nupkg

前面的地址是需要生成的项目文件路径,后面的output 接的路径是指包文件生成路径

2、直接鼠标右键方式:

这种方式默认包生成路径在该项目下,Bin =》debug 文件夹下,这里重点看下,这种方式有个问题就是第一次点击发包,然后生成成功,但是当你再次点击发包,则失败

提示成功0个,这代表重新打包失败了,需要右键点击清理后才可以再次进行打包。

好啦,通过上面的操作,我们的类库包已经打包好了,可以看看包文件

文件后缀是nupkg 格式的,注意看下,这里的1.0.0 是对应的版本好,这个很重要,下面会详细说到;

②、.NET Core 项目引用包的操作方式

前面有说到,引用包是通过nuget 的方式引用的,这个也是Core的一个特色,引用第三方插件都是通过nuget 的方式直接搜索安装即可,下面来操作一下,先配置一下数据源,因为默认是没有你本地的包文件数据源的

添加一个程序源,记得路径要改为你的包路径,点击确定

然后再进行引用

这里就可以看到我们刚建的类库项目了,选中直接安装即可,这样就已经引用成功啦

后台代码直接就可以调用这个包里面的类进行操作了,这样整个操作已经完成,不过我在操作过程中,有遇到几个问题,这里重点记录一下

1、重复打包失败问题,前面有说到,需要清理后重新打包即可;

2、如果包需要更改,更改后怎么重新打包引用。

我在测试过程中,在类里面加了个属性,但是重新引用后,还是没有变成改之后的参数,不管是删掉nuget程序源或重新建站点,都是如此,怀疑是不是包的问题,把更新后的包给同事,但是在他那边却是更新后的包,这样,就确定了包其实是没有问题的,后面,发现了这个其实和包的版本有关,前面有说到那个版本问题,默认是1.0.0,如果这个版本不变,则即使包更改了,重新引用还是如此,都是改之前的,解决方式就是更改包源文件后,需要更改他的包版本,再打包,如下:

更改后然后重新打包,然后包的文件就变成了,名称和版本号保持一致(不要想说重命名包名就可以,我试过了,是不行的哦),此时,版本号变了后,站点Nuget 解决方案就会自动有更新的提示,你直接点击安装即可,这样,就已经更新到了最新的包版本,这种方式就有个问题,如果每次更新类库了,都需要改它的版本号才行,我目前了解是这样,也许有其他方式

这里还提示一下,打包方式不会存在包里面引用第三方插件还需重新引用的问题。

好啦,以上完毕,我也是才接触,如果有什么问题大家只管留言,三克油

.Net Core 项目引用本地类库方式(一)的更多相关文章

  1. .Net Core 项目引用本地类库方式(二)

    上篇文章有详细的介绍.Net Core 项目中引用本地类库通过打包,然后Nugety引用方式,这里再介绍一种引用包的方式

  2. chrome调试本地项目, 引用本地javascript文件

    chrome调试本地项目, 引用本地javascript文件 本地文件可以访问本地文件 修改快捷方式属性 C:\Users\xxx\AppData\Local\Google\Chrome\Applic ...

  3. 使用VSCode创建.NET Core 项目,添加类库间引用

    注:网络上搜索到的关于VsCode创建调试.Net Core 项目的文章都比较老旧,不能完全参考使用,根据网络文章.微软官方文档的指导下,学习并整理此文档,但也大体和文档学习路线相似,主要为记录学习过 ...

  4. Eclipse插件项目 引用其他类库的方法(jar)

    这两天搞了个Eclipse插件项目,用来监测ios.android设备和电脑的连接,安装apk/ipa到对应设备等等功能. 遇到了build path下的library引入编译正常,运行时报Class ...

  5. VS Code 添加移除asp.net core项目引用

    可以通过编辑.csproj文件来添加或者移除项目引用. 注意这里并没有智能提示, 最好是在Nuget网站(https://www.nuget.org/)搜索好相关包之后填写进来. 编辑结束之后, vs ...

  6. C#创建控制台项目引用Topshelf的方式,部署windows服务。

    上一篇是直接创建windows service服务来处理需求.调试可能会麻烦一点.把里面的逻辑写好了.然后受大神指点,用Topshelf会更好一些. 来公司面试的时候问我,为什么要用stringbui ...

  7. 新建asp.net core项目

    开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建web项目时,务必选择“ASP.NET ...

  8. VisualStudioCode中用dotnet命令创建多个ASP.NET Core 项目、类库、控制台程序,并添加应用间的引用

    一.准备工作 首先安装VisualStudioCode并且可以使用. 1.首先新创建空的MyApps文件夹,作为项目主目录,下面将在这个文件夹中创建多个web应用程序.类型.控制台程序等. 2.打开V ...

  9. .Net Core 项目中的包引用探索(使用VSCode)

    本文组织有点乱,先说结论吧: 1 在 project.json 文件中声明包引用. 而不是像以前那样可以直接引用 dll. 2 使用 dotnet restore 命令后,nuget 会把声明的依赖项 ...

随机推荐

  1. Java-Maven-Runoob:Maven 构建 & 项目测试

    ylbtech-Java-Maven-Runoob:Maven 构建 & 项目测试 1.返回顶部 1. Maven 构建 & 项目测试 在上一章节中我们学会了如何使用 Maven 创建 ...

  2. Centos7部署CephFS

    标签(空格分隔): ceph环境,ceph,cephfs cephfs部署之前准备工作: 1. 一个 clean+active 的cluster cluster部署参考:centos7下搭建ceph ...

  3. 【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形

    FindContours 在二值图像中寻找轮廓  int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_cont ...

  4. const int *pi与int&nbs…

    此质料是摘要:<<彻底搞定C 指针 >>,自己感觉比较有价值,现与大家分享. 1. 从const int i 说起 你知道我们声明一个变量时象这样int i :这个i是可能在它 ...

  5. springBean之BeanFactory与ApplicationContext

    一.主要区别: 两者都是通过xml配置文件加载bean,ApplicationContext和BeanFacotry相比,提供了更多的扩展功能,但其主要区别在于后者是延迟加载,如果Bean的某一个属性 ...

  6. Linux下安装Python2.7

    Linux下安装Python2.7 CentOS6.8 中默认安装了Python2.6,但是很多应用需要使用Python2.7,于是要学会如何在Linux下安装Python2.7,这里记录一下,免得以 ...

  7. 20-从零玩转JavaWeb-Super关键字与子类初始化过程

    配套详解视频  super关键字 继承内存分析 this与super对比 继承字段隐藏 继承Object根类 一.Super关键字的作用 this:当前对象,谁调用this所在的方法,this就是哪一 ...

  8. C语言语法目录二

    1.char类型 char c;定义了一个char变量 'a' ; char常量 char的本质就是一个整数,一个只有一个字节大小的整数 char c; 定义一个有符号的char unsigned c ...

  9. 说说API的重放机制

    API的重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击.重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果这个正 ...

  10. ajax请求参数中含有特殊字符"#"的问题 (另附上js编码解码的几种方法)

    使用ajax向后台提交的时候 由于参数中含有#  默认会被截断 只保留#之前的字符  json格式的字符串则不会被请求到后台的action 可以使用encodeURIComponent在前台进行编码, ...