当前位置: 首页 > news >正文

运用.net core配合VS 2015制作nuget包

      以往做nuget包我们一般要么用命令行,要么用nuget的图形化界面去做,但是一些操作比较麻烦.比如引入命名空间,引入第三方nuget包.今天,我们来讲解下一种全新的构建方式.

 

环境:

win10

VS2015 企业版

.net 全家桶(.net framework,dnx,.NET core)

 

Why:

      运用.net core+官方这种特殊类库项目,一切都可以用代码编辑完成,不需要做一些对我们来讲非常额外的工作,于是乎,构建变得无比简单.本人强烈建议以后做nuget类库的时候都用这样的方法.

 

步骤:

      环境搭建好后,我们在visual C#里面,新建一个类库(程序包)

      关于项目结构,参考参考链接,这里不做赘述.

      目前.net core尚不完善,system.web 都没了,于是我们要对默认的项目设置进行调整.

      打开project.json.这是项目描述,相当于以前nuget构建期间的xml,在框架节点,删除dotnet5.4

{
    "version": "1.0.0-*",
    "description": "FantasticCommonLibrary.Mvc.Core Class Library",
    "authors": [ "Z" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "net45": {
            "dependencies": {
                "UAParser": "2.1.0"
            },
            "frameworkAssemblies": {
                "System.ComponentModel.DataAnnotations": "4.0.0.0",
                "System.configuration": "4.0.0.0",
                "System.Net.Http": "4.0.0.0",
                "System.Web": "4.0.0.0",
                "System.Web.Extensions": "4.0.0.0"
            }
        },
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "FluentValidation": "6.1.0",
        "Microsoft.AspNet.Mvc": "5.2.3",
        "Newtonsoft.Json": "8.0.2"
    }
}

      保存以后,就会发现引用下面少了最新的那个框架.由于沿用旧的4.5.1点框架,生成也不再有意外.

 

      然后我们使用.net core的如下命令

cd <.xproj所在的那个目录>
:还原依赖项 dotnet restore :打包 dotnet pack

      之后在项目,bin/debug里面会看到2个文件:.nupkg和.symbols.nupkg.第一个文件就是我们想要的nuget包.至此,构建完成

 

      .nupkg是一个压缩包,用7z解压后打开里面的自述文件.nuspec.可以看到引用的nuget包和系统引用完好的在那里.

<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>FantasticCommonLibrary.Mvc.Core</id>
    <version>1.0.0</version>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <developmentDependency>false</developmentDependency>
    <authors>Z</authors>
    <owners>Z</owners>
    <description>FantasticCommonLibrary.Mvc.Core Class Library</description>
    <tags></tags>
    <dependencies>
      <group targetFramework=".NETFramework4.5">
        <dependency id="FluentValidation" version="[6.1.0, )" />
        <dependency id="Microsoft.AspNet.Mvc" version="[5.2.3, )" />
        <dependency id="Newtonsoft.Json" version="[8.0.2, )" />
        <dependency id="UAParser" version="[2.1.0, )" />
      </group>
    </dependencies>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="System.ComponentModel.DataAnnotations" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Configuration" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Net.Http" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Web" targetFramework=".NETFramework4.5" />
      <frameworkAssembly assemblyName="System.Web.Extensions" targetFramework=".NETFramework4.5" />
    </frameworkAssemblies>
  </metadata>
</package>

 

bug:

  1. 目前.net core不支持中文目录,会乱码,导致找不到路径
  2. 项目有时生成失败,此时要删除project.lock.json.重新生成
  3. 引用System.Configuration的时候不知为何变成System.configuration(c变成小写),会导致构建失败.这时需要自己修改project.json的frameworkAssemblies节点.然后重新生成.

 

 

关于nuget一些文法的问题,请参见官方文档

 

参考链接:

.net core 官网

Create a New NuGet Package with DNX

nuget官方文档

 

相关文章:

  • linux shell数据重定向(输入重定向与输出重定向)详细分析 上(转)
  • PHP开发学习门户改版效果图投票
  • 收到云栖社区发的淘公仔礼物
  • d语言之模块化
  • 7.12 Models -- Frequently Asked Questions
  • Mysql错误问题记录
  • PostgreSQL wal receiver 统计信息 patch
  • 【COCOS CREATOR 系列教程之四】基于0.7.1先简单制作一个PAGEVIEW
  • 两列自适应布局方案整理
  • 在.net桌面程序中自定义鼠标光标
  • Beanstalkd中文协议解读
  • windows ping RPi 2B
  • BLE4.0相关
  • Steve Souders 高性能网站建设指南14条提升网站页面速度的最佳实践(1)
  • 生成日期序列
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 4个实用的微服务测试策略
  • Codepen 每日精选(2018-3-25)
  • linux安装openssl、swoole等扩展的具体步骤
  • pdf文件如何在线转换为jpg图片
  • Shadow DOM 内部构造及如何构建独立组件
  • socket.io+express实现聊天室的思考(三)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 猴子数据域名防封接口降低小说被封的风险
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 每天一个设计模式之命令模式
  • 前端临床手札——文件上传
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #{}和${}的区别?
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (10)ATF MMU转换表
  • (4.10~4.16)
  • (bean配置类的注解开发)学习Spring的第十三天
  • (floyd+补集) poj 3275
  • (python)数据结构---字典
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • .NET单元测试
  • .net实现客户区延伸至至非客户区
  • .NET中GET与SET的用法
  • .net中的Queue和Stack
  • @ModelAttribute使用详解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ JavaScript ] JSON方法
  • [ARC066F]Contest with Drinks Hard
  • [c]扫雷
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [hdu 3746] Cyclic Nacklace [kmp]