【转】.net core 一次坑爹的类库打包过程
2017-04-21 23:10
363 查看
自己遇到这个问题,记录一下,原文链接:http://www.cnblogs.com/Hai--D/p/5776463.html。
众所周知,.net core 跨平台类库引用一定要通过nuget获得。(如有问题,欢迎指出)
1.新建.net core 的类库 -》 把原所有文件拷贝过来 -》 在project.json中解决依赖包问题 -》编译打包
2.新建.net core 的类库 -》 在project.json中配置源文件include complie, 如下:
通过buildOptions的comple的include,把原来文件路径引用过来
-》 编译project, 通过cmd命令切换到project目录
-》 打成nuget包
这样,在原bin/debug目录下面会多出nuget包文件。
通过反复验证,一个package包无论引用了多少其他程序集(包括自定义的),只需发布最终需要的package就可以了,因为依赖关系都已经在里面了。如下图:
我的MongoDB.Driver.Dotnet引用了MongoDB.Bson.Dotnet和MongoDB.Driver.Core.Dotnet,打包的时间只需MongoDB.Driver.Dotnet就可以了。
依赖关系都在打包的MongoDB.Driver.Dotnet.nuspec文件里
但这不是坑爹的地方,坑就坑在nuget在本地会有缓存在以下目录中
C:\Users\%Local User%\.nuget\packages
如果重新打包没有升级版本号,单纯在服务器端切换nuget包是没有的,一定要把本地也清空了。。
目测是2015升级到最新版本才有的问题,因为我之前服务器直接替换没遇到过这样类似的问题,stackoverflow的这位仁兄也是
http://stackoverflow.com/a/33214933
众所周知,.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 一次坑爹的类库打包过程
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
- 记一次android程序反编译并二次打包的过程
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
- 记一次结巴分词.net core 2.0版 nuget发布过程
- .NET Core 系列5 :使用 Nuget打包类库
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
- .NET Core 系列5 :使用 Nuget打包类库
- (转)Elasticsearch 的坑爹事——记录一次mapping field修改过程
- 如何手动完成一次APK打包?----APK编译全过程
- Elasticsearch 的坑爹事——记录一次mapping field修改过程(转)
- 记一次linux下composer使用的坑爹过程
- [原创]记一次APP脱壳重打包过程
- 如何手动完成一次APK打包?----APK编译全过程
- .NET Core 控制台项目中的Nuget打包类库及引用
- 记一次打包源码的过程
- 没有pdb也要定位问题:一次注入崩溃的定位过程
- .net core项目中常用的几款类库详解(值得收藏)
- react打包过程遇到的问题