在.NET Core RC2中生成.exe文件

时间:2016-05-23 12:16:25

标签: .net asp.net-core .net-core package.json .net-core-rc2

每次使用新的.NET Core RC2模板构建项目时,我都提供了一个可运行的。 EXE 文件。如果我按F5调试我的控制台应用程序,它可以通过

运行
C:\Program Files\dotnet\dotnet.exe 

应用。如果我使用

dotnet run 
在文件夹中的

命令,它运行正常。但是我认为没有.NET Core CLI工具就无法运行应用程序。

我的内容

 bin\Debug\netcoreapp1.0\

文件夹如下所示:

Bin folder structure

正如您所见,没有。 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"
    }
  }
}

谢谢!

5 个答案:

答案 0 :(得分:70)

.NET Core中实际上有两个应用程序模型:

  • 便携式应用:受“DNX控制台应用”的启发,这些应用不会生成.exe个文件,而是由.NET Core共享运行时执行(其中版本由Microsoft.NETCore.App包定义,这要归功于其特殊的type: platform属性。必须在计算机上安装相应的.NET Core运行时才能使用便携式应用程序。如果找不到确切的版本,则在运行dotnet run时会抛出异常。

  • 独立应用:独立应用与旧版.NET控制台应用非常相似,因为它们会生成.exe个文件。 .NET Core运行时不必安装在计算机上,因为它直接嵌入了应用程序本身。

您目前正在使用第一个型号。要使用独立模型,您需要调整project.json

  • 添加runtimes部分,列出您的应用将定位的环境(例如win7-x64ubuntu.14.04-x64)。您可以找到完整列表here
  • 删除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": { }
  }
}

答案 1 :(得分:13)

答案在documentation,现在有完整的步骤。

  

您可以为.NET Core应用程序创建两种类型的部署:

     
      
  1. 依赖于框架的部署
  2.   
  3. 自包含部署
  4.   

对于可运行的.EXE文件,应使用Self-contained deployment

答案 2 :(得分:7)

要从.NET Core控制台应用程序创建可运行的应用程序,您可以使用dotnet tool。只需在项目目录中运行:

dotnet publish --runtime win7-x64

这将创建一个独立的应用程序(自包含部署;包括磁盘上至少消耗60MB的所有必需库)。当然,您也可以选择其他运行时,例如osx.10.11-x64ubuntu.16.04-x64

如果您使用默认配置(New Project -> Console App (.NET Core)),则不会修改任何必要的配置文件。

答案 3 :(得分:4)

第1步:从"type": "platform",部分

下的Project.json中删除frameworks

第2步:在project.json中添加运行时段。注意每个部分都用逗号分隔。添加运行时。下面只是胜利10的一个例子。

"runtimes": {
       "win10-x64": {}      
     }

步骤3:对项目执行dotnet restore命令。 (打开cmd,转到你的项目文件夹,无论src文件夹在哪里,运行dotnet restor)

第4步:dotnet pack 第4步:dotnet build -r win10-x64 - 或者只是构建。

步骤5:您可以注意到在debug / netcore / win10 /

下创建的.exe

答案 4 :(得分:2)

CreditCard中尝试将您的应用ASP.NET Core更改为typedefault

project.json