众所周知,.net core 跨平台类库引用一定要通过nuget获得。(如有问题,欢迎指出)

打包

将普通.net project转换成.net core 的类库有两种方式:

1.新建.net core 的类库 -》 把原所有文件拷贝过来 -》 在project.json中解决依赖包问题 -》编译打包

2.新建.net core 的类库 -》 在project.json中配置源文件include complie, 如下:

  "frameworks": {
"netstandard1.6": {
"imports": "dnxcore50",
"buildOptions": {
"compile": {
"include": [ "../MongoDB.Driver/**/*.cs", "../MongoDB.Shared/Hasher.cs" ]
},
"define": [ "DEBUG", "TRACE" ],
"warningsAsErrors": true,
"outputName" : "MongoDB.Driver",
"xmlDoc": true
}
}
}

通过buildOptions的comple的include,把原来文件路径引用过来

-》 编译project, 通过cmd命令切换到project目录

-> dotnet build

-》 打成nuget包

-> dotnet pack

这样,在原bin/debug目录下面会多出nuget包文件。

引用

坑爹就坑在引用上。

通过反复验证,一个package包无论引用了多少其他程序集(包括自定义的),只需发布最终需要的package就可以了,因为依赖关系都已经在里面了。如下图:

我的MongoDB.Driver.Dotnet引用了MongoDB.Bson.Dotnet和MongoDB.Driver.Core.Dotnet,打包的时间只需MongoDB.Driver.Dotnet就可以了。

依赖关系都在打包的MongoDB.Driver.Dotnet.nuspec文件里

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>MongoDB.Driver.Dotnet</id>
<version>1.0.0</version>
<authors>MongoDB.Driver.Dotnet</authors>
<owners>MongoDB.Driver.Dotnet</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>MongoDB.Driver.Dotnet</description>
<tags></tags>
<dependencies>
<group targetFramework=".NETStandard1.6">
<dependency id="MongoDB.Bson.Dotnet" version="[1.0.0, )" />
<dependency id="MongoDB.Driver.Core.Dotnet" version="[1.0.0, )" />
<dependency id="NETStandard.Library" version="[1.6.0, )" />
<dependency id="System.Linq.Expressions" version="[4.1.0, )" />
<dependency id="System.Linq.Queryable" version="[4.0.1, )" />
</group>
</dependencies>
</metadata>
</package>

但这不是坑爹的地方,坑就坑在nuget在本地会有缓存在以下目录中

C:\Users\%Local User%\.nuget\packages

如果重新打包没有升级版本号,单纯在服务器端切换nuget包是没有的,一定要把本地也清空了。。

目测是2015升级到最新版本才有的问题,因为我之前服务器直接替换没遇到过这样类似的问题,stackoverflow的这位仁兄也是

http://stackoverflow.com/a/33214933

.net core 一次坑爹的类库打包过程的更多相关文章

  1. 【转】.net core 一次坑爹的类库打包过程

    自己遇到这个问题,记录一下,原文链接:http://www.cnblogs.com/Hai--D/p/5776463.html. 众所周知,.net core 跨平台类库引用一定要通过nuget获得. ...

  2. 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

    本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...

  3. iOS 静态类库 打包 C,C++文件及和OC混编

    iOS 静态类库 编译 C,C++ 我们都知道,OC 原生支持C, 在 创建的 OC类的 .m 里面,可以直接编写C的代码: 同样 Xcode 也支持 OC ,C++的混编,此时,我们通常把OC创建的 ...

  4. Android 类库打包、发布方法

    开发Android应用的时候,对于可用于多个应用的公用的部分,或是打算发布给第三方进行应用集成的部分,要把这部分打包成类库怎么做呢? Android应用使用ADT打包成apk,apk中包含了运行程序所 ...

  5. Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets

    一,引言 上一篇文章我们在 .Net Core Web 项目中添加了 "Microsoft.Azure.KeyVault" 的 Nuget 包操作 Azure KeyVault 的 ...

  6. Android应用程序(APK)的编译打包过程

    (9878) (7) 现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的 ...

  7. 【转】android Apk打包过程概述_android是如何打包apk的

    最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程.   流程概述: 1.打包资源文件,生成 ...

  8. Android系统的镜像文件的打包过程

    在前面一篇文章中,我们分析了Android模块的编译过程.当Android系统的所有模块都编译好之后,我们就可以对编译出来的模块文件进行打包了.打包结果是获得一系列的镜像文件,例如system.img ...

  9. android Apk打包过程概述_android是如何打包apk的

    流程概述:1.打包资源文件,生成R.java文件2.处理aidl文件,生成相应java 文件3.编译工程源代码,生成相应class 文件4.转换所有class文件,生成classes.dex文件5.打 ...

随机推荐

  1. plist的读取和写入

    // 从plist中读取数组数据 let arrPath = Bundle.main.path(forResource: "ArrayPList", ofType: "p ...

  2. Appfuse:起步

    在众多开源的Java开源CMS中探索了很久,终于选定了appfuse,理由如下: 1. 简洁:只搭建了框架,没有做多余的事 2. 完成了基本的用户管理:用户.角色.权限的定义很清晰 3. 符合预期的架 ...

  3. 分布式集群系统下的高可用session解决方案

    目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制. 目前,在集群系统下实现session统一的有如下几种 ...

  4. MS SQL统计信息浅析下篇

       MS SQL统计信息浅析上篇对SQL SERVER 数据库统计信息做了一个整体的介绍,随着我对数据库统计信息的不断认识.理解,于是有了MS SQL统计信息浅析下篇. 下面是我对SQL Serve ...

  5. hive load数据为null

    建表语句: CREATE EXTERNAL TABLE IF NOT EXISTS student2 > (sno INT,sname STRING,age INT,sex STRING) &g ...

  6. 关于java中的MANIFEST.MF 文件内容

    打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息.可以简化Java应用程 ...

  7. 【小白的CFD之旅】16 流程

    那天听了小牛师兄关于CFD应用的四种境界的说法后,小白发现自己连第一种境界都算不上,自己对于CFD还只是停留在做了少数几个案例的基础上,可以说是对其一无所知.不过小白不是那种遇到挫折就退缩的人,他决定 ...

  8. Linux吃掉我的内存

    在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能.而当我 ...

  9. linux学习(2)

    自从安装了虚拟机和各种工具软件之后,学习Linux的过程不断被打断,一直想把Ubuntu烧录到itop4412开发板里面去,却总是失败,感觉这个过程都加强我的抗打击能力了,现在来说说,对于一个第一次烧 ...

  10. 【2016-11-3】【坚持学习】【Day18】【我认识的ORM】

    我学过或者用过的ORM有几种 EF NHibernate DevExpress  xpo (第一家公司用这个,也是很省力的orm,现在已经不记得了.) 今天晚上想找一下有没有轻量级的orm: flue ...