实际上,在 .NET Core 中有两种应用程序模型:
可移植应用程序:受“DNX控制台应用程序”的启发,这些应用程序不会生成.exe
文件,而是由.NET Core共享运行时执行(其版本由Microsoft.NETCore.App
包定义,感谢其特殊的type: platform
属性)。相应的.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": { }
}
}
buildOptions
,而且你已经有了"emitEntryPoint": true
,这应该可以解决问题。你尝试过从 cmd 窗口手动运行dotnet build
吗?另外,你确定你正在查看正确的输出目录吗? - David Pine