每次我用新的.NET核心RC2模板I am not提供了一个可运行的.EXE文件.如果我点击F5调试我的控制台应用程序,它可以在整个过程中正常运行

C:\Program Files\dotnet\dotnet.exe 

应用如果我使用

dotnet run 

命令,它也可以正常运行.但我认为,如果没有应用程序,就无法运行该应用程序.NET核心CLI工具.

我的书的内容

 bin\Debug\netcoreapp1.0\

文件夹如下所示:

Bin folder structure

正如你所见,没有可用的.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核心中实际上有两个应用程序模型:

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

  • Standalone apps:独立应用程序与优秀的旧.NET控制台应用程序非常相似,因为它们可以生成.exe个文件.NET Core运行时不必安装在计算机上,因为它直接嵌入到应用程序本身.

您当前使用的是第一个型号.要使用独立模型,需要调整project.json:

  • 添加runtimes部分以列出您的应用程序将面向的环境(例如win7-x64ubuntu.14.04-x64).你可以找到完整的 list 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": { }
  }
}

.net相关问答推荐

如何在PowerShell中隐藏任务延迟输出?

WinForm Task.Wait :为什么它会阻塞 UI?

AppShell - 返回导航失败,匹配的路由不明确......但我只注册了一次路由

NET 6:控制器方法不可访问

为什么 GetShortestDayName 返回的名称比预期的短?

StreamWriter.Flush() 和 StreamWriter.Close() 有什么区别?

是否可以模拟 .NET HttpWebResponse?

返回 IQueryable 或不返回 IQueryable

使文本框不可编辑

我应该从 .NET 中的 Exception 或 ApplicationException 派生自定义异常吗?

获取当前方法的名称

使用只读属性或方法?

是否有 TLS 1.2 的 .NET 实现?

C# 编译为 32/64 位,或任何 cpu?

如何授予所有用户对我的应用程序创建的文件的完全权限?

所有数组在 C# 中都实现了哪些接口?

如何将 System.Type 转换为其可为空的版本?

如何从 .NET 读取 PEM RSA 私钥

C# List<> 按 x 然后 y 排序

DLL 中有什么以及它是如何工作的?