在.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\
文件夹看起来像这样:
正如你所看到的,没有。 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-x64
或ubuntu.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的部署:
- 依赖于框架的部署
- 自包含的部署
对于可运行的.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-*" }