在.NETCoreRC2中构建.exe 文件

每次我使用新的。NET 核心 RC2模板我的 没有提供了一个可运行的。EXE文件。如果我按下 f5调试我的控制台应用,它可以正常运行

C:\Program Files\dotnet\dotnet.exe

如果我使用

dotnet run

命令,它也可以正常运行。但是,如果没有。NET 核心 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"
}
}
}

谢谢!

31180 次浏览

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

  • 便携式应用程序 : 这些应用程序深受“ DNX 控制台应用程序”的启发,它们不生成 .exe文件,而是由。NET 核心共享运行时(由于其特殊的 type: platform属性,其版本由 Microsoft.NETCore.App包定义)。对应的。NET 核心运行时必须安装在机器上才能使用便携式应用程序。如果找不到确切的版本,则在运行 dotnet run时引发异常。

  • 独立应用程序 : 独立应用程序真的很类似于好的老式应用程序。NET 控制台应用程序生成 .exe文件。那个。NET 核心运行时不必安装在计算机上,因为它直接嵌入到应用程序本身中。

你现在使用的是第一个模型。要使用独立模型,你需要调整你的 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": { }
}
}

ASP.NET Core中,尝试将你的应用程序 type改为 default,在 project.json中:

"Microsoft.NETCore.App": {
"type": "default",
"version": "1.0.0-*"
}

答案现在在具有完整步骤的 文件中。

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

  1. 依赖于框架的部署
  2. 自给自足的部署

对于可运行的.EXE 文件,应使用 发布独立的

步骤1: 在 frameworks节下从 Project.json 中删除 "type": "platform",

步骤2: 将运行时部分添加到 project.json。注意,每个部分用逗号分隔。添加运行时。以下只是赢得10分的一个例子。

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

步骤3: 在项目上使用 dotnet 恢复命令。(打开 cmd,到你的项目文件夹,只要 src 文件夹在那里,运行 dotnet 恢复)

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

步骤5: 您可以注意到在 debug/netcore/win10/下创建的. exe

创建可运行的应用程序。NET 核心控制台应用你可以使用 网络工具。只需在项目目录中运行:

dotnet publish --runtime win7-x64

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

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