在 .NET Core RC2 中构建 .exe 文件
Build .exe file in .NET Core RC2
每次我使用新的 .NET Core RC2 模板构建项目时,我 没有 提供 运行nable .EXE 文件。如果我按 F5 调试我的控制台应用程序,它 运行 可以通过
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 中实际上有 2 个应用程序模型:
便携式应用程序:深受 "DNX console apps" 启发,这些应用程序不生成 .exe
文件,而是由.NET Core 共享运行时(由于其特殊的 type: platform
属性,其版本由 Microsoft.NETCore.App
包定义)。必须在计算机上安装相应的 .NET Core 运行时才能使用便携式应用程序。如果找不到准确的版本,当 运行 dotnet run
.
时抛出异常
独立应用程序:独立应用程序非常类似于旧的 .NET 控制台应用程序,因为它们会生成 .exe
文件。 .NET Core 运行时不必安装在机器上,因为它直接嵌入到应用程序本身。
您目前使用的是第一个模型。要使用独立模型,您需要调整 project.json
:
- 添加
runtimes
部分以列出您的应用将面向的环境(例如 win7-x64
或 ubuntu.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": { }
}
}
在 ASP.NET Core
中尝试将您的应用 type
更改为 default
,在 project.json
中:
"Microsoft.NETCore.App": {
"type": "default",
"version": "1.0.0-*"
}
答案在 documentation 中,现在步骤完整。
You can create two types of deployments for .NET Core applications:
- Framework-dependent deployment
- Self-contained deployment
对于可运行的 .EXE 文件,应使用 Publish self-contained。
第 1 步:从 frameworks
部分
下的 Project.json 中删除 "type": "platform",
第 2 步:将 运行 时间段添加到您的 project.json。请注意,每个部分都用逗号分隔。添加您的 运行 时间。以下只是 win 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
要从 .NET Core 控制台应用程序创建 运行可用应用程序,您可以使用 dotnet tool。只是 运行 在你的项目目录中:
dotnet publish --runtime win7-x64
这将创建一个独立的应用程序(独立部署;包括所有必要的库,占用您的磁盘至少 60MB)。当然你也可以选择其他运行次,比如osx.10.11-x64
或ubuntu.16.04-x64
。
如果您使用默认配置 (New Project -> Console App (.NET Core)
),则无需修改任何配置文件。
每次我使用新的 .NET Core RC2 模板构建项目时,我 没有 提供 运行nable .EXE 文件。如果我按 F5 调试我的控制台应用程序,它 运行 可以通过
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 中实际上有 2 个应用程序模型:
便携式应用程序:深受 "DNX console apps" 启发,这些应用程序不生成
.exe
文件,而是由.NET Core 共享运行时(由于其特殊的type: platform
属性,其版本由Microsoft.NETCore.App
包定义)。必须在计算机上安装相应的 .NET Core 运行时才能使用便携式应用程序。如果找不到准确的版本,当 运行dotnet run
. 时抛出异常
独立应用程序:独立应用程序非常类似于旧的 .NET 控制台应用程序,因为它们会生成
.exe
文件。 .NET Core 运行时不必安装在机器上,因为它直接嵌入到应用程序本身。
您目前使用的是第一个模型。要使用独立模型,您需要调整 project.json
:
- 添加
runtimes
部分以列出您的应用将面向的环境(例如win7-x64
或ubuntu.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": { }
}
}
在 ASP.NET Core
中尝试将您的应用 type
更改为 default
,在 project.json
中:
"Microsoft.NETCore.App": {
"type": "default",
"version": "1.0.0-*"
}
答案在 documentation 中,现在步骤完整。
You can create two types of deployments for .NET Core applications:
- Framework-dependent deployment
- Self-contained deployment
对于可运行的 .EXE 文件,应使用 Publish self-contained。
第 1 步:从 frameworks
部分
"type": "platform",
第 2 步:将 运行 时间段添加到您的 project.json。请注意,每个部分都用逗号分隔。添加您的 运行 时间。以下只是 win 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要从 .NET Core 控制台应用程序创建 运行可用应用程序,您可以使用 dotnet tool。只是 运行 在你的项目目录中:
dotnet publish --runtime win7-x64
这将创建一个独立的应用程序(独立部署;包括所有必要的库,占用您的磁盘至少 60MB)。当然你也可以选择其他运行次,比如osx.10.11-x64
或ubuntu.16.04-x64
。
如果您使用默认配置 (New Project -> Console App (.NET Core)
),则无需修改任何配置文件。