運用.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官方文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM