【转】.net core 一次坑爹的类库打包过程
自己遇到这个问题,记录一下,原文链接:http://www.cnblogs.com/Hai--D/p/5776463.html。
众所周知,.net core 跨平台类库引用一定要通过nuget获得。(如有问题,欢迎指出)
打包
将普通.net project转换成.net core 的类库有两种方式:
1.新建.net core 的类库 -》 把原所有文件拷贝过来 -》 在project.json中解决依赖包问题 -》编译打包
2.新建.net core 的类库 -》 在project.json中配置源文件include complie, 如下:

1 "frameworks": {
2 "netstandard1.6": {
3 "imports": "dnxcore50",
4 "buildOptions": {
5 "compile": {
6 "include": [ "../MongoDB.Driver/**/*.cs", "../MongoDB.Shared/Hasher.cs" ]
7 },
8 "define": [ "DEBUG", "TRACE" ],
9 "warningsAsErrors": true,
10 "outputName" : "MongoDB.Driver",
11 "xmlDoc": true
12 }
13 }
14 }

通过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 一次坑爹的类库打包过程的更多相关文章
- .net core 一次坑爹的类库打包过程
众所周知,.net core 跨平台类库引用一定要通过nuget获得.(如有问题,欢迎指出) 打包 将普通.net project转换成.net core 的类库有两种方式: 1.新建.net cor ...
- 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理
本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...
- Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets
一,引言 上一篇文章我们在 .Net Core Web 项目中添加了 "Microsoft.Azure.KeyVault" 的 Nuget 包操作 Azure KeyVault 的 ...
- iOS 静态类库 打包 C,C++文件及和OC混编
iOS 静态类库 编译 C,C++ 我们都知道,OC 原生支持C, 在 创建的 OC类的 .m 里面,可以直接编写C的代码: 同样 Xcode 也支持 OC ,C++的混编,此时,我们通常把OC创建的 ...
- Android 类库打包、发布方法
开发Android应用的时候,对于可用于多个应用的公用的部分,或是打算发布给第三方进行应用集成的部分,要把这部分打包成类库怎么做呢? Android应用使用ADT打包成apk,apk中包含了运行程序所 ...
- ASP.NET Core Identity 实战(4)授权过程
这篇文章我们将一起来学习 Asp.Net Core 中的(注:这样描述不准确,稍后你会明白)授权过程 前情提要 在之前的文章里,我们有提到认证和授权是两个分开的过程,而且认证过程不属于Identity ...
- .NET Core 系列5 :使用 Nuget打包类库
NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...
- 10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)
前言 NuGet就是一个包(package)管理平台,确切的说是 .net平台的包管理工具,它提供了一系列客户端用于生成,上传和使用包(package),以及一个用于存储所有包的中心库. 对于一个现代 ...
- .NET Core 控制台项目中的Nuget打包类库及引用
由于使用的是MAC版本的VSCode,所以全部是通过dotnet命令来完成的. 1.dotnet new lib 创建类库项目: 2.编辑项目根目录下的.csproj文件,添加版本号(建议): < ...
随机推荐
- pictureBox控件获得图片路径的三种方法及自适应大小属性
1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupP ...
- [转]How to Import a Text File into SQL Server 2012
Importing a using the OpenRowSet() Function The OPENROWSET bulk row set provider is accessed by call ...
- 关于post跨域请求数据的问题-包括同源策略
在<system.webServer>配置下面加入 <httpProtocol> <customHeaders> <add name="Access ...
- 使用ms owin 搭建oauth2 server
http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server 有示例代码 关于token的 ...
- Springboot --- Spring Security (一)
文章部分图片来自参考资料 问题 : Spring Security 内部实现的原理是什么 概述 Spring Security 是个安全框架,可以提供认证,防止网络功能等功能,可以结合 sprin ...
- mysql sql语句大全(MySQL语句 整理一)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- [日常] Go语言圣经-命令行参数
1.编译 go build hello.go 2.go get gopl.io/ch1/helloworld 命令,就会从网上获取代码,并放到对应目录中 下载的代码会放在$GOPATH/src/gop ...
- Centeros7下安装Mysql 2018最新版,非常简单
下载Mysql的rpm安装包 shell> wget http://dev.mysql.com/get/ mysql-community-release-el7-5.noarch.rpm安装sh ...
- hdu 4090
GemAnd Prince Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Go 语言实现 HTTP 层面的反向代理
最近对 Go 语言的反向代理使用得偏多,其实在大概两年前就写过 TCP 层面的代理,而且那时也是用的 Go 语言,不同之处在于之前只是偶尔尝试一下使用,最近是因为工作需要使用的.相比较于 TCP 层面 ...