2016-12-14 88 views
8

我在Visual Studio中製作了一個.NET核心控制檯應用程序。我想現在打包它作爲一個可執行文件的Windows & mac。爲mac製作一個自包含的可執行文件

我將運行時段添加到project.json。

這是基於我在這裏看到我的projects.json:https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index#self-contained-application

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "AngleSharp": "0.9.9", 
    "CsvHelper": "2.16.3", 
    "Microsoft.NETCore.App": { 
     "version": "1.0.1" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
    } 
    }, 
    "runtimes": { 
    "win10-x64": {}, 
    "osx.10.10-x64": {} 
    } 
} 

這在調試/釋放一個文件夾,名爲win10-x64包括一個可執行的,但沒有文件夾OSX。

我是否缺少依賴項來定位此操作系統?

回答

5

答案是命令行

dotnet publish -r osx.10.10-x64 

發佈然後將文件夾/osx.10.10-x64/publish/認爲,可以在安裝了SDK在Mac上運行的文件。

+0

-r實際上並沒有做太多的事情,我想如果你已經爲每個平臺配置了某些設置,它可能會使用一些設置。最終,您可以使用它將運行時與您的應用捆綁到一個特定平臺的二進制文件中,但該功能尚未準備好用於1.0。我剛剛在我以前爲Windows/Linux發佈的一個項目上使用過你的命令,並且它重新發布的唯一文件是PROJECTNAME.deps.json,PROJECTNAME.runtimeconfig.json和web.config,它在我現有的bin \ Debug \ netcoreapp1.0 \發佈。項目DLL本身沒有重新編譯。 – user169771

+0

它似乎在工作。我有一個文件,我可以運行在Mac上 – Guerrilla

-1

.NET Core不會直接構建可執行文件。雖然這是路線圖,但最後我檢查了它(1.0.1),但它尚未實現。您將在編譯時獲得一個DLL文件,您可以通過將它傳遞給dotnet二進制文件來運行該文件。不要讓DLL擴展欺騙你,它可以在任何支持的平臺上工作。

正如其他人說你應該做一個發佈,以確保所有的應用程序文件複製到發佈文件夾,以便他們準備捆綁,但同一個DLL文件只是複製在那裏。我採用了相同的發佈結果,並在Windows和Kestrel下的Red Hat下運行它們。

+1

它雖然工作。我收到了一個在Mac上運行的文件。 – Guerrilla

相關問題