Dot-Net

在 .NET Core RC2 中建構 .exe 文件

  • May 23, 2016

每次我使用新的 .NET Core RC2 模板建構項目時,我都沒有提供可執行的 . EXE文件。如果我按 F5 來調試我的控制台應用程序,它會通過

C:\Program Files\dotnet\dotnet.exe 

應用。如果我使用

dotnet run 

文件夾中的命令,它也執行良好。但是我認為沒有 .NET Core CLI 工具就無法執行該應用程序。

我的內容

bin\Debug\netcoreapp1.0\

文件夾如下所示:

bin文件夾結構

如您所見,沒有 . EXE文件可用。只是dll。

我忽略了什麼嗎?還是我的 project.json 文件有問題?

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

 "dependencies": {
   "Microsoft.NETCore.App": {
     "type": "platform",
     "version": "1.0.0-rc2-3002702"
   }
 },

 "frameworks": {
   "netcoreapp1.0": {
     "imports": "dnxcore50"
   }
 }
}

謝謝!

.NET Core 中實際上有 2 個應用模型:

  • 攜帶式應用程序:受到“DNX 控制台應用程序”的極大啟發,這些應用程序不生成.exe文件,而是由 .NET Core 共享執行時執行(其版本由Microsoft.NETCore.App包定義,這要歸功於其特殊type: platform屬性)。必須在機器上安裝相應的 .NET Core 執行時才能使用攜帶式應用程序。如果找不到準確的版本,執行時會拋出異常dotnet run
  • 獨立應用程序.exe:獨立應用程序在生成文件時與舊的 .NET 控制台應用程序非常相似。.NET Core 執行時不必安裝在機器上,因為它直接嵌入到應用程序本身中。

您目前正在使用第一個模型。要使用獨立模型,您需要調整project.json

  • 添加一個runtimes部分以列出您的應用程序將針對的環境(例如win7-x64ubuntu.14.04-x64)。您可以在此處找到完整列表。
  • 移除Microsoft.NETCore.App依賴。你可以用這個包代替它:"NETStandard.Library": "1.5.0-rc2-24027".

這是一個獨立應用程序的範例:

{
 "buildOptions": {
   "emitEntryPoint": true,
   "preserveCompilationContext": true,
   "warningsAsErrors": true
 },

 "dependencies": {
   "Microsoft.Extensions.Configuration.Binder": "1.0.0-rc2-final",
   "Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc2-final",
   "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
   "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
   "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
   "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
   "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
   "NETStandard.Library": "1.5.0-rc2-24027"
 },

 "frameworks": {
   "net451": { },

   "netcoreapp1.0": {
     "dependencies": {
       "System.Net.Ping": "4.0.0-rc2-24027"
     },

     "imports": [
       "dnxcore50",
       "dotnet5.6",
       "portable-net451+win8"
     ]
   }
 },

 "runtimes": {
   "win7-x64": { }
 }
}

引用自:https://stackoverflow.com/questions/37390798