2016-11-30 26 views
1

我知道這是不可能建立/兩種不同的方式,即發佈.NET核心應用:便攜式應用"type": "platform")和獨立的應用程序"type": "build")。配置.netcore項目爲便攜式,但發佈爲自足

當我創建使用dotnet newproject.json默認設置爲便攜式應用的新應用:

"frameworks": { 
    "netcoreapp1.1": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.1.0" 
     }, 
     "Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160629" 
     } 
    } 
    } 

它意味着我的應用程序將取決於運行時,它安裝在機器上,我將在哪裏運行該應用程序。

但是如果我決定,我想以便攜式和自包含模式發佈此應用程序呢? 當我設置類型爲build並嘗試運行該應用程序,我收到一個錯誤,對此,我猜,預計:

C:\ TEMP \ testproj> DOTNET恢復& & DOTNET運行

log:爲C:\ temp \ testproj \ project.json恢復軟件包...

log:在C:\ temp \ testproj \ project.json中恢復工具'dotnet-compile-fsc'的軟件包。 。

log:鎖定文件沒有沒有改變。跳過鎖定文件寫入。路徑:C:\ TEMP \ testproj \ project.lock.json

日誌:C:\ TEMP \ testproj \ project.json

日誌:在1973ms恢復完成。

無法找到與目標運行時兼容的框架'.NETCoreApp,Version = v1.1'的運行時目標:'win10-x64,win81-x64,win8-x64,win7-x64'。可能的原因:

  1. 該項目尚未恢復或恢復失敗 - 運行dotnet restore

  2. 該項目未列出的「win10-x64的一個,win81-64,win8的-64,Win7的-64 '在'運行時間'部分。

  3. 您可能試圖發佈不支持的庫。使用dotnet pack來分發庫。

,並使其工作,我可以設置添加一個runtimes部分project.json,其中會列出我目前該機的架構作爲支持之一。

的問題是: 有沒有一種方法來發布應用程序既作爲獨立的,不改變每次project.json便攜式?

回答

0

您可以在project.jsonscripts部分執行此操作。您有4個活動 - precompile,postcompile,prepublishpostpublish。在任何你想要像腳本可以(例如有兩個procet.json,更換和dotnet publish與他們執行)

您鐵道部的CanRead在https://docs.microsoft.com/pl-pl/dotnet/articles/core/tools/project-json#scripts

+0

scripts節謝謝您的回答。這與我想象的解決方案會有些不同。我可以通過將這種邏輯添加到構建腳本來實現相同的行爲。我雖然有沒有兩個不同的project.json文件的方式。 – derwasp