zoukankan      html  css  js  c++  java
  • .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序

    在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序。在这篇博文中我们将 Ubuntu 换成 CentOS。

    目前 dnx 的编译需要用到 mono,所以先要安装 mono,而且最好是用最新的 mono 源代码进行编译并安装。

    我们实际成功编译的操作步骤如下(假设将 mono 安装到 /data/mono_build 目录):

    mkdir /data/mono_build
    PATH=/data/mono_build/bin:$PATH
    git clone https://github.com/mono/mono.git
    cd mono
    ./autogen.sh --prefix=/data/mono_build
    make get-monolite-latest
    make
    make install

    注:开始没有使用 make get-monolite-latest,结果在 make 时因为找不到 mcs 而失败。

    如果想始终使用这个自己编译的 mono,需要在 ~/.bash_profile 中添加如下的的配置:

    export PATH=/data/mono_build/bin:$PATH

    接下来用下面的命令安装 dnvm :

    curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

    然后就可以编译 dnx 了:

    # ./build.sh
    Installing 'KoreBuild 0.2.1-beta6-10166'.
    Successfully installed 'KoreBuild 0.2.1-beta6-10166'.
    Installing 'Sake 0.2'.
    Successfully installed 'Sake 0.2'.
    Determining latest version
    Latest version is 1.0.0-beta6-12085 
    Downloading dnx-mono.1.0.0-beta6-12085 from https://www.myget.org/F/aspnetvnext/api/v2
    Download: https://www.myget.org/F/aspnetvnext/api/v2/package/dnx-mono/1.0.0-beta6-12085
    ######################################################################## 100.0%
    Installing to /root/.dnx/runtimes/dnx-mono.1.0.0-beta6-12085
    Adding /root/.dnx/runtimes/dnx-mono.1.0.0-beta6-12085/bin to process PATH
    Setting alias 'default' to 'dnx-mono.1.0.0-beta6-12085'
    
    ...
    
    Attempting to build package from 'dnx-mono.nuspec'.
    Successfully created package '/data/git/dnx/artifacts/build/dnx-mono.1.0.0-t150618141518.nupkg'.
    info: Target package

    编译成功后,就可以用 artifacts/build/dnx-coreclr-linux-x64/bin 中的 dnx 运行 ASP.NET 5 示例程序了。

    先从 GitHub 上签出 ASP.NET 5 示例程序:

    https://github.com/aspnet/Home.git

    运行前准备:

    1)启用 dnvm

    source /root/.dnx/dnvm/dnvm.sh

    2)安装 openssl

    yum install -y openssl-devel

    不然会出现下面的错误:

    System.TypeInitializationException: The type initializer for 'libcrypto' threw an exception. 
    ---> System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
       at Interop.libcrypto..cctor()

    3)编译并安装 libuv(为了运行kestrel)

    git clone https://github.com/libuv/libuv.git
    sh autogen.sh
    ./configure
    make
    make install
    ldconfig

    后来遇到用最新的libuv源代码安装后依然找不到libuv的问题,建议下载libuv-1.4.2的源代码进行安装,安装方法如下:

    curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src
    cd /usr/local/src/libuv-1.4.2
    sh autogen.sh
    ./configure
    make 
    make install
    rm -rf /usr/local/src/libuv-1.4.2 && cd ~/
    ldconfig

    不然会出现下面的错误:

    System.InvalidOperationException: Unable to load libuv. Make sure libuv is installed and available as libuv.so.1

    然后分别运行 Home/samples/latest/ 中的三个 ASP.NET 5 示例程序(运行前先要运行 dnu restore)。

    1)ConsoleApp

    [root@server1 ConsoleApp]# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . run
    Hello World

    2)HelloWeb

    [root@server1 HelloWeb]# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
    Started

    3)HelloMvc

    [root@server1 HelloMvc]# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
    Started

    在 CentOS 上也成功体验了一下跨平台的 .NET。

  • 相关阅读:
    使用bootstrap中的toolTip插件时 最上方提示会被遮挡问题
    Vue中splice的使用
    由于eslint语法检查工具限制很严格,导致启动项目是报错的解决办吧(使用cmder工具时发生的错误)
    windows命令行工具—Cmder配置
    mui触发自定义事件(子页面返回传递给父级页面值)
    计算最长英语单词链
    周总结14
    找水王
    用户体验评价
    周总结13
  • 原文地址:https://www.cnblogs.com/dudu/p/4587296.html
Copyright © 2011-2022 走看看