在.NET Core RC2中生成.exe文件
每次使用新的.NET Core RC2模板构建项目时,我都没有提供可运行的.EXE文件。如果我点击F5调试我的控制台应用程序,它可以在整个过程中正常运行在.NET Core RC2中生成.exe文件,.net,asp.net-core,.net-core,package.json,.net-core-rc2,.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核心CLI工具,我看不到运行应用程序的方法 我的书的内容 bin\Debug\netcoreapp1.0\ 文件夹如下所示: 如您所见,没有可用的.EXE文件。只有dll 我
C:\Program Files\dotnet\dotnet.exe
应用程序。如果我使用
dotnet run
命令,它也可以正常运行。但是如果没有.NET核心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控制台应用程序”的启发,不生成
文件,而是由.NET Core共享运行时执行(由于其特殊的.exe
属性,其版本由类型:platform
包定义)。计算机上必须安装相应的.NET Core运行时,才能使用便携式应用程序。如果找不到确切的版本,则在运行Microsoft.NETCore.App
时会引发异常dotnet run
- 独立应用程序:独立应用程序与旧的.NET控制台应用程序非常相似,因为它们生成
文件。NET核心运行时不必安装在计算机上,因为它直接嵌入到应用程序本身中.exe
project.json
:
"Microsoft.NETCore.App": {
"type": "default",
"version": "1.0.0-*"
}
- 添加一个
部分,列出应用程序将要针对的环境(例如runtimes
或win7-x64
)。您可以找到完整的列表ubuntu.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
中,在project.json
中尝试将应用程序类型更改为默认值
:
"Microsoft.NETCore.App": {
"type": "default",
"version": "1.0.0-*"
}
答案就在后面,现在有完整的步骤
您可以为.NET核心应用程序创建两种类型的部署:
依赖于框架的部署
自包含部署
对于可运行的.EXE文件,应使用。步骤1:从框架下的Project.json中删除“类型”:“平台”
步骤2:将运行时部分添加到project.json中。注:每个部分用逗号分隔。添加您的运行时。下面只是win 10的一个示例
"runtimes": {
"win10-x64": {}
}
步骤3:在项目上使用dotnet restore命令。(打开cmd,转到src文件夹所在的项目文件夹,运行dotnet restor)
第4步:dotnet包
第4步:dotnet构建-r win10-x64
-或仅构建
步骤5:您可以注意到在debug/netcore/win10/下创建的.exe要从.NET Core控制台应用程序创建可运行的应用程序,您可以使用。只需在项目目录中运行:
dotnet publish --runtime win7-x64
这将创建一个独立的应用程序(自包含部署;包括消耗磁盘上至少60MB的所有必要库)。当然,您也可以选择其他运行时,如osx.10.11-x64
或ubuntu.16.04-x64
如果使用默认配置(New Project->Console App(.NET Core)
),则无需修改任何配置文件。@DavidPine在RC2中不推荐使用compilationOptions。不管怎样,我试过了,结果都是一样的。你说得对,很抱歉。它应该是buildOptions
,并且您已经拥有了“emittentrypoint”:true
,这应该可以实现这个功能。您是否尝试从cmd行窗口手动运行dotnet build
?另外,您确定您正在查找正确的输出目录吗?@DavidPine是的,我尝试了build、run和publish命令。它们都很好用。我只是在我的bin文件夹或任何底层文件夹中没有.exe文件。我想你应该用“dotnet yourfile.dll”运行netcoreapp1.0。这对我来说在windows和WSL上都很好,就是这样!谢谢您能否解释一下netcoreapp1.0
frameworks部分是否是必需的?也就是说,您已将System.Net.Ping
列为依赖项-是否可以将其移动到先前定义的dependencies
部分?这两种应用程序模型都不会生成单个.exe-我猜这仅在完整的.Net框架上可能?@romkyns单个.exe?你的意思是没有任何.dll?@Pinpoint-很好的解释。您的MS文档链接也列出了Linux运行时(例如debian.8-x64)。它们可以构建为独立的应用程序吗?