【问题标题】:Is it possible to compile a self-contained ASP.NET Core Web Application是否可以编译自包含的 ASP.NET Core Web 应用程序
【发布时间】:2017-01-25 04:16:38
【问题描述】:

我正在寻找一种方法来生成一个独立的 EXE,它将启动 ASP.NET Core (.NET Core)。该项目将简单地从 /wwwroot 提供一些静态文件。

我找到了一个fewresources,它展示了如何将控制台应用程序变成一个独立的 EXE。这些资源涉及修改似乎不存在的 project.json(至少在初始模板上)。

我没有看到任何允许我使用 ASP.NET Core 应用程序执行此操作的方法,这是可能的还是我遗漏了什么?

【问题讨论】:

    标签: c# asp.net-core .net-core


    【解决方案1】:

    是的。

    但是,如果您在项目的文件夹中找不到 project.json 文件,则说明您在设置时做错了。

    为您的项目创建一个新文件夹后,在控制台中导航到该文件夹​​并使用以下命令创建一个新的 Web 项目:

    dotnet new -t web
    

    此时应创建 project.json 文件以及所有 Web 模板文件。

    打开 project.json 文件并删除(或注释掉)该行

    "type": "platform"
    

    您还应该在“依赖项”块之后添加以下值

    "runtimes": { 
        "win10-x64": {}
    },
    

    请注意,应更改“win10-x64”以匹配您的服务器将在其上运行的机器的体系结构。有关 .net 核心支持的运行时 ID (RID) 的完整列表,请访问https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog

    保存对 project.json 文件的更改并运行恢复命令:

    dotnet restore
    

    然后构建

    dotnet build
    

    您可以在 bin/Debug/netcoreapp[version]/[RID] 中找到 *.exe 文件。

    请注意,如果您从该文件夹运行此可执行文件,可执行文件将找不到您的模型、视图和控制器,并且您的页面将为空白。

    【讨论】:

    • 我似乎一直在使用旧版本的 dotnet core(卸载和安装最新版本 + dotnet new -t web 允许 project.json 出现)。 Visual Studio 2017 RC 仍在制作没有 project.json 和 csproj 文件的项目以添加到我们现有的解决方案中。
    • 在 dotnet core github.com/dotnet/core/blob/master/release-notes/… 的预览版 3 上使用 dotnet migrate 修复了上述问题。现在正在确认独立。
    • 预览版 3 的 dotnet new -t Web 似乎没有生成 project.json 文件(如 VS2017RC)。是否有另一种通过 csproj/xml 生成 EXE 的方法?
    • 以上答案对于当前版本的 .NET Core CLI(17 年 1 月)是正确的。 VS2017 RC 带有一个使用新的 MS Build / XML 系统的 alpha 版本。
    • 太糟糕了 project.json 已被弃用。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多