问题 如何运行.Net Core dll?


我使用构建我的控制台应用程序 dnu build 在我的Mac上命令。输出是 MyApp.dll

事实并非如此 MyApp.exe,我怎么能在Windows上,甚至在Mac上执行它?

代码是:

using System;

class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello from Mac");        
    }
}

4437
2018-04-09 12:36


起源

库不是不可执行的,因为它们没有放入入口点吗? - SolaGratia
@BjarneStroustrup这是一个控制台应用程序。为了清楚起见,我把代码放了。 - mehrandvd
stackoverflow.com/a/30377175/17034 - Hans Passant
@HansPassant我明白了你的观点,但是'甚至是Mac'部分呢?如何在Mac上运行构建的版本。有了代码,我可以使用它来运行它 dnx run。 - mehrandvd


答案:


将其添加到project.json文件中:

 "compilationOptions": {
        "emitEntryPoint": true
 },

它将在Windows上生成MyApp.exe(在bin / Debug中)或其他平台上的可执行文件。

编辑:30/01/2017

这已经不够了。您现在可以在框架相关部署和自包含部署之间进行描述 这里

简写:

依赖于框架的部署 (.net核心存在于目标系统上)

  • 使用dotnet命令行实用程序运行dll dotnet MyApp.dll

自包含部署 (所有组件包括.net核心运行时都包含在应用程序中)

  • 去掉 "type": "platform" 来自project.json
  • 将runtimes部分添加到project.json
  • 使用目标操作系统构建 dotnet build -r win7-x64
  • 运行生成 MyApp.exe

project.json文件:

  {
      "version": "1.0.0-*",
      "buildOptions": {
        "emitEntryPoint": true
      }, 
      "frameworks": {
         "netcoreapp1.0": {
            "dependencies": {
               "Microsoft.NETCore.App": {
                  "version": "1.0.1"
               }
            }
         }
       },
       "imports": "dnxcore50",
       "runtimes": { "win7-x64": {} }
    }

14
2018-04-09 15:38



这似乎不再是这个伎俩:( - Douglas Gaskell
@DouglasGaskell谢谢。我编辑了答案 - Fabian
另一种选择是使用dotnet.exe运行dll: dotnet MyApplication.dll [application arguments]。 - Mike E