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

每次我使用新的.NET Core RC2模板构build项目时,我都没有提供可运行的。 EXE文件。 如果我打F5debugging我的控制台应用程序,它通过运行良好

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中实际上有两种应用程序模型:

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

  • 独立应用程序 :独立应用程序与生成.exe文件的旧版.NET控制台应用程序非常相似。 .NET Core运行时不需要安装在机器上,因为它直接与应用程序本身一起embedded。

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

  • 添加一个runtimes部分列出您的应用程序的目标环境(例如win7-x64ubuntu.14.04-x64 )。 你可以在这里find完整的列表。
  • 删除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": { } } } 

答案是现在完整的步骤在文档中 。

您可以为.NET Core应用程序创build两种types的部署:

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

对于可运行的.EXE文件,应使用自包含的部署

第1步:从frameworks部分的Project.json中删除"type": "platform",

第2步:将运行时间部分添加到您的project.json。 注意每个部分都用逗号分隔。 添加你的运行时。 下面是赢得10的一个例子。

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

第3步:在您的项目上的dotnet恢复命令。 (打开CMD,到你的项目文件夹中的任何地方有src文件夹,运行dotnet restor)

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

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

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

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