尝试在Mac上编译DNX

自从XRE改名为DNX至今,从来没有在Mac OS X上成功编译过DNX。一直很纳闷,难道DNX的开发人员不用Mac?今天突然明白了,DNX的开发人员真的不用Mac。而且DNX用的2个持续集成服务AppVeyor与Travis,一个是Windows环境,一个是Linux环境,就是没有Mac OS X环境。

看来不能指望DNX的开发人员短期内解决这个问题了,只能自己动手。

编译的错误信息如下(编译命令./build.sh):

Restore complete, 725ms elapsed
info: Target initialize
info: Target build-managed-projects
info: Exec
info:   program: kpm
info:   commandline: pack src/dnx.host --configuration Debug
info:   workingdir: /git/dotnet/dnx
warn: ApplicationName=‘kpm‘, CommandLine=‘pack src/dnx.host --configuration Debug‘, CurrentDirectory=‘/git/dotnet/dnx‘, Native error= Cannot find the specified file
verbose: Stack trace:
  at System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) [0x00000] in :0

从错误信息看,是找不到kpm引起的,kpm不是改名为dnu了吗?怎么还在找kpm?

打开build.sh文件一看,编译实际使用的命令是:

mono packages/Sake/tools/Sake.exe -I packages/KoreBuild/build -f makefile.shade "[email protected]"

Sake是一个在ASP.NET vNext时期临时开发出来的.NET跨平台构建工具(目测会被跨平台的msbuild取代),目前DNX的编译还是借助于Sake。

打开packages/KoreBuild/build文件夹,发现其中有三个与kpm相关的文件:

_kpm-build.shade,_kpm-pack.shade,_kpm-publish.shade

打开一看,文件中的确调用了kpm命令:

exec program=‘cmd‘ commandline=‘/C kpm pack${pack_options} ${projectFolder} --configuration ${configuration}‘ if=‘!IsMono‘
exec program=‘kpm‘ commandline=‘pack${pack_options} ${projectFolder} --configuration ${configuration}‘ if=‘IsMono‘

于是,将kpm改为dnu:

exec program=‘cmd‘ commandline=‘/C dnu build${build_options} ${projectFolder} --configuration ${configuration}‘ if=‘!IsMono‘
exec program=‘dnu‘ commandline=‘build${build_options} ${projectFolder} --configuration ${configuration}‘ if=‘IsMono‘

改过之后,重新build,之前的错误消失了,原来是改名惹的祸!

但是出现了新的错误:

System.Net.WebException: Error: SendFailure (The object was used after being disposed.)
---> System.ObjectDisposedException: The object was used after being disposed.
  at System.Net.WebConnection.BeginWrite (System.Net.HttpWebRequest request, System.Byte[] buffer, Int32 offset, Int32 size, System.AsyncCallback cb, System.Object state) [0x00000] in <filename unknown>:0 

后来在DNX的Issue(Fail to build using dnu build)中得知,这是Mono 4.0.1的bug引起的。

于是,只能等Mono修复这个bug,才能继续尝试在Mac上编译DNX。

时间: 2024-10-05 04:27:57

尝试在Mac上编译DNX的相关文章

Mac上编译并运行Android5.0源码

下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和Building the System. 我是在OSX 10.10.3上编译的AOSP,记录一下中途碰到的各种问题. 下载 AOSP需要FQ,而且经常会断,还好是断点续传,坚持个两三天怎么也能下下来. case sensitive system 我在Mac上对file system只会用Disk U

剖析并利用Visual Studio Code在Mac上编译、调试c#程序

0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很不错的文档编辑器.不过匹夫更关心的是它的跨平台能力,这不,匹夫偷得半日闲,写篇小文来聊聊在Mac上如何使用Visual Studio Code编译和调试C#代码,最后匹夫也会尝试把Visual Studio Code嵌入Unity3D中,作为一个准“IDE”使用. 0x01 Visual Studi

剖析并利用Visual Studio Code在Mac上编译、调试c#程序【转】

0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很不错的文档编辑器.不过匹夫更关心的是它的跨平台能力,这不,匹夫偷得半日闲,写篇小文来聊聊在Mac上如何使用Visual Studio Code编译和调试C#代码,最后匹夫也会尝试把Visual Studio Code嵌入Unity3D中,作为一个准“IDE”使用. 0x01 Visual Studi

.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 g

npm grunt在mac上编译bootstrap源码

因为gmu需要用编译的方式下载,于是联想到bootstrap什么less sass编译 less先学,据说基于js编译和less编译器,安装起来详细, sass据网上介绍基于ruby, 以下为在mac上下载编译boostrap过程 1.安装node.js brew install node.js就可以了 2.sudo npm install bootstrap(记住npm命令需要加sudo) 3.进入bootstrap sudo npm install(根据package.json编译)(再次提

尝试在Linux上编译KestrelHttpServer

Kestrel是目前在非Windows平台上运行ASP.NET 5应用程序的唯一可用Web服务器,但微软似乎将它冷落在一边,源代码更新很慢. 今天试着在Linux上编译Kestrel的源代码,遇到了很多问题.在这篇博文中记录一下. 运行编译命令: ./build.sh 出错信息: -bash: ./build.sh: Permission denied 修复方法: chmod +x build.sh 再次编译,出错: ./build.sh: line 31: packages/KoreBuild

在Linux Ubuntu上编译DNX

DNX是.NET Execution Environment,前身是XRE,XRE的前身是KRuntime,项目网址:https://github.com/aspnet/DNX . 签出DNX的代码: git clone https://github.com/aspnet/DNX.git --recursive 安装Mono: apt-get install mono-complete 运行./build.sh命令进行编译,出现错误: WARNING: Invalid certificate r

Mac上编译C++报错

今天在使用Mac编译C++文件时,提示以下错误. 1 Undefined symbols for architecture x86_64: 2 "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from: 3 void std::__1::vector<E, std::__1::allocator<E> >::__push_back_slo

Mac上编译Hadoop1.0.3出现的一些问题

create-native-configure: [exec] configure.ac:47: error: possibly undefined macro: AC_PROG_LIBTOOL [exec] If this token and others are legitimate, please use m4_pattern_allow. [exec] See the Autoconf documentation. [exec] autoreconf: /usr/local/Cellar