Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.NET Core RC2中生成.exe文件_.net_Asp.net Core_.net Core_Package.json_.net Core Rc2 - Fatal编程技术网

在.NET Core RC2中生成.exe文件

在.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 我

每次使用新的.NET Core RC2模板构建项目时,我都没有提供可运行的.EXE文件。如果我点击F5调试我的控制台应用程序,它可以在整个过程中正常运行

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控制台应用程序”的启发,不生成
    .exe
    文件,而是由.NET Core共享运行时执行(由于其特殊的
    类型:platform
    属性,其版本由
    Microsoft.NETCore.App
    包定义)。计算机上必须安装相应的.NET Core运行时,才能使用便携式应用程序。如果找不到确切的版本,则在运行
    dotnet run
    时会引发异常

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

您当前正在使用第一个模型。要使用独立模型,需要调整
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)。它们可以构建为独立的应用程序吗?