【问题标题】:How to run a .Net Core dll?如何运行.Net Core dll?
【发布时间】:2016-04-09 12:36:56
【问题描述】:

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

由于不是MyApp.exe,我如何在windows甚至Mac上执行它?

代码是:

using System;

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

【问题讨论】:

  • 库不是因为没有入口点而无法执行吗?
  • @BjarneStroustrup 这是一个控制台应用程序。为了清楚起见,我放了代码。
  • @HansPassant 我明白你的意思,但是“甚至在 Mac 上”部分呢?如何在 Mac 上运行构建版本。有了代码,我可以使用dnx run 运行它。

标签: c# .net-core


【解决方案1】:

将此添加到您的 project.json 文件中:

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

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

编辑:2017 年 1 月 30 日

这已经不够了。您现在可以在依赖框架的部署和自包含部署之间进行选择,如 here 所述。

短格式:

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

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

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

  • 从 project.json 中删除 "type": "platform"
  • 将运行时部分添加到 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": {} }
}

【讨论】:

  • 新项目似乎并不总是有projects.json,在这种情况下,您可以使用发布选项根据平台生成独立的可执行文件,请参见此处:stackoverflow.com/questions/44074121/…
  • 旁注;仅当目标操作系统是 Windows 时才会构建 exe。对于其他操作系统(例如 Linux),将生成一个可执行的 DLL。它仍然可以工作;但具有不同的文件扩展名。如果 DLL 不可执行,您可能需要使用 chmod u+x MyApp.dll 来更正权限。
【解决方案2】:

您可以使用dotnet publish 为您的控制台应用程序生成 .exe 输出。

更多详情:Publish .NET Core apps with the CLI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多