1. 程式人生 > >記一次結巴分詞.net core 2.0版 nuget發布過程

記一次結巴分詞.net core 2.0版 nuget發布過程

core param inf 文件 pos 成功 搜索 ros uri

最近用到分詞考慮很久,選用了結巴分詞,原因見博客Lucene.net(4.8.0) 學習問題記錄五: JIEba分詞和Lucene的結合,以及對分詞器的思考

既然選好了,難就開始行動吧 。
查了.net core版的JIEba分詞目前已經有人遷移了

  1. https://github.com/linezero/jieba.NET 不過是net core 1.1版本,看到上邊有issue也沒有人處理,感覺好像作者不維護了。
  2. https://github.com/SilentCC/JIEba-netcore2.0,這個是fork上邊的然後自己升級到.net core 2.0 和Lucene結合了。由於我沒有用Lucene,所以這個對我來說作用不大。
    考慮了很久最終決定fork第一個,然後自己純粹的升級到.net core 2.0 就行了。
    實際升級過程並沒有難度。很快就升級上去了。地址:https://github.com/1483523635/jieba.NetCore
    準備使用的時候發現沒有可用的nuget包,連1.1的nuget包都沒有。我徹底絕望了。
    .net core 下開發沒有nuget包?讓我在項目中引用dll? 太蛋疼了。
    於是開啟了首次發布nuget的過程。
  3. 註冊個賬戶
    2.創建一個api key 然後保存下來
  4. 打開解決方案 可以看到一共有三個項目: 分別是Analyser(類庫),jieba.NET(控制臺輸出),Segmenter(類庫)。

    由於Segmenter項目沒有引用別的項目 ,於是準備先發布這個nuget
    首先要下載nuget.exe,根據自己需要下載對應的版本,然後將nuget.exe 所在的路徑添加到環境變量中去。
    然後命令行進入該項目
    nuget setApiKey <my_api_key>
    成功之後會有以下提示信息:已保存Nuget庫和符號服務器的API 秘鑰
    nuget spec
    提示:已成功創建 *.nuspec ,記事本打開進行編輯
    技術分享圖片
    根據需要自行修改內容
    nuget pack Segmenter.csproj
    出現錯誤:
    無法將類型為“System.String”的對象強制轉換為類型“NuGet.Frameworks.NuGet.Frameworks1070507.NuGetFramework”。
    有人反饋說是nuget.exe 版本問題,我換了nuget版本可是問題依舊存在,後來在Stack Overflow 上找到了答案:替換為dotnet pack 就行了。
    dotnet pack
    成功之後出現:successfully create package ****.nupkg
    之後將生成的 nupkg文件上傳到nuget上就行了
    nuget push *.nupkg <you api key >
    出現錯誤Source paramter was not specified
    google一下看到確實有這個問題 後來在github上找到了答案 :
    正確的做法是:
    nuget push *.nupkg <you api key> -Source https://api.nuget.org/v3/index.json
    成功push上去了
    技術分享圖片
    之後就可以在nuget上看到了
    目前發布了兩個結巴分詞的nuget
    技術分享圖片
    每次上傳都要進行審核,審核通過之後才可以被外界訪問。
    以後大家可以在nuget裏搜索關鍵字結巴分詞就能夠找到nuget包了
    技術分享圖片

    補充一下

    如果是vs2017 發布nuget更簡單了詳見vs 2017 發布nuget

記一次結巴分詞.net core 2.0版 nuget發布過程