zoukankan      html  css  js  c++  java
  • 运用.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官方文档

  • 相关阅读:
    ORACLE 9i数据库服务器的体系结构
    datareader ,dataset ,datatable使用的区别
    ArrayList、Hashtable、DataTable、DataView、DataReader和DataSet,DataGrid等的区别和各自的优缺点
    oracle安装后net不能登陆(三a)
    c#的事件机制示例代码: 猫> 老鼠, 主人
    如果你是一个踌躇满志的男人
    oracel 数据字段类型
    ORAL架构
    也谈猫、老鼠、主人的观察者模式问题 (zhuang)
    4 phrases everyday000
  • 原文地址:https://www.cnblogs.com/zeusro/p/5171084.html
Copyright © 2011-2022 走看看