在Mac/Linux/Windows上编译corefx遇到的问题及解决方法

这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编译都失败了。后来一一都解决了,在这篇博文中分享一下。

(一)

在Mac上编译corefx遇到的错误如下:

/git/dotnet/corefx/dir.props(214,5): warning :
The Roslyn targets do not exist- Roslyn will not be used for this build, but the package should be restored if you build again.
[/git/dotnet/corefx/src/dirs.proj]

/git/dotnet/corefx/dir.props(214,5): warning :
The Roslyn targets do not exist- Roslyn will not be used for this build, but the package should be restored if you build again.
[/git/dotnet/corefx/src/Microsoft.CSharp/src/Microsoft.CSharp.csproj]

/var/folders/c4/lf8cm6lx5178xsswpzfs2f_c0000gn/T/tmp257bf798c8da46a7baf3954722152b21.exec.cmd:
line 3: /git/dotnet/corefx/packages/dnx-mono.1.0.0-beta5-11760/bin/dnu: Permission denied

/git/dotnet/corefx/packages/Microsoft.DotNet.BuildTools.1.0.25-prerelease-00050/lib/packageresolve.targets(31,5): error MSB3073:
The command ""/git/dotnet/corefx/packages/dnx-mono.1.0.0-beta5-11760/bin/dnu" restore --packages "/git/dotnet/corefx/packages" "/git/dotnet/corefx/src/Microsoft.CSharp/src/project.json"" exited with code 126.
[/git/dotnet/corefx/src/Microsoft.CSharp/src/Microsoft.CSharp.csproj]

...

6 Warning(s)
5 Error(s)

删除corefx中packages文件夹重新编译,错误变成了:

System.IO.InvalidDataException: Unable to read package from path ‘Microsoft.Net.ToolsetCompilers.1.0.0-rc3-20150510-01.nupkg‘.
---> System.IO.FileFormatException: The specified archive is invalid.
at System.IO.Packaging.Package.OpenCore (System.IO.Stream stream, FileMode packageMode,
	FileAccess packageAccess, Boolean ownsStream) <0x1055e4fd0 + 0x001df> in <filename unknown>:0 

再次编译,又回到了之前的错误。

怀疑问题是Mac电脑与NuGet服务器之间的网络问题引起的,于是从另外一台Linux服务器上将corefx所需的所有packages下载下来之后,编译就取得了成功。

scp -r [email protected]:/git/corefx/packages/ /git/dotnet/corefx
./build.sh
...
    1 Warning(s)
    0 Error(s)
Time Elapsed 00:07:33.93
Build Exit Code = 0

(二)

在Linux CentOS上编译corefx遇到的错误如下:

Restoring MSBuild...
WARNING: Error: SendFailure (Error writing headers)
WARNING: Error: SendFailure (Error writing headers)
WARNING: The request timed out
WARNING: Error: SendFailure (Error writing headers)
Unable to find version ‘14.1.0.0-prerelease‘ of package ‘Microsoft.Build.Mono.Debug‘.
Failed to restore MSBuild.

这个问题是由于没有在Linux上安装根证书,无法以https访问nuget服务器,运行下面的命令就可以解决问题:

mozroots --import --sync

(三)

在Windows上编译corefx遇到的错误如下(电脑上安装的是Visual Studio 2015):

corefx\src\Common\src\System\SR.cs(19,67): error CS0117:
‘SR‘ does not contain a definition for ‘ResourceType‘
[corefx\src\Microsoft.CSharp\src\Microsoft.CSharp.csproj]
...

这个问题比较怪,竟然是前段时间编译corefx时在bin文件夹生成的文件引起的,删除corefx中的bin文件夹,重新编译,问题就消失了。

【相关链接】

Build fails on Mac/Linux/Windows

时间: 2024-07-31 14:32:48

在Mac/Linux/Windows上编译corefx遇到的问题及解决方法的相关文章

在windows上部署使用Redis出现问题的解决方法

下载Redis 在Redis的官网下载页上有各种各样的版本,我这次是在windows上部署的,要去GitHub上下载.目前的是2.8.12版的,直接解压,在\bin\release 目录下有个压缩包,这就是我们需要的: 启动Redis 直接在上图的目录打开命令窗口,运行: redis-server redis.windows.conf 结果就悲剧了,提示:QForkMasterInit: system error caught. error code=0x000005af, message=Vi

[ZZ] 在windows上编译Mesa3d opengl32库

在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa3d是一套跨平台的opengl/es库, 它不提供编译好的二进制包,所以必须自己动手编译. Linux默认都带了这个软件, 因此Linux上直接用就可以了. 如果想在linux上的编译, 也比较简单, 本文不赘述.那么如何在Windows上编译这个库呢? Mesa3d官网给出了编译方法. http:

Docker在Linux/Windows上运行NetCore文章系列

原文:Docker在Linux/Windows上运行NetCore文章系列 Windows系列 因为Window很简单,VS提供界面化配置,所以只写了一篇文章 Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用 Linux(ubuntu 16.04) Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 Docker在Linux上运行NetCore系列(二)把本地编译好的镜像发布到线上阿里云仓库 Docker

使用VS Code配合Remote Development插件连接远程服务器(Mac/Linux+Windows) | Using VS Code with Remote Development Connect to Remote Server (Mac/Linux+Windows)

最新版VS Code(2019年6月)出了一系列新的插件,包括Remote Development,Remote SSH等,使得用户可以使用VS Code远程连接服务器写代码,方便了协同工作.具体配置(Mac/Linux, Windows)操作如下: 1.首先,在插件市场中搜索这些插件,安装Remote Development即可将一系列插件,包括Remote SSH等一同安装. 2.接下来需要生成ssh的key. 打开命令行,输入: ssh-keygen -t rsa -b 4096 接下来,

windows上编译 python C源码

跟随<python源码剖析>一书,了解python内部机制.今天搞定了在windows上编译python源代码. 按照书中的内容,使用VS2008编译Python2.7.9.相似的步骤见下面的链接: http://www.cnblogs.com/heshizhu/archive/2012/08/09/2630346.html 我使用的是VS2008ProEdition90天的试用版,中间遇到一些问题记录一下: 无法打开文件python27.lib 原因及解决方案:系统是win8 64位,没有安

Windows上编译PHP的MagickWand扩展

首先这是一个漫长的过程,尝试编译此插件的用户一定要有耐心.大致流程可以划分为: 编译ImageMagick 编译MagickWand 关于PHP的版本.Windows的PHP是用哪个版本的VC编译的,这个一定要先弄清楚,例如我的是VC9编译的,那么一定要下载对应的VC来编译.例如VC9对应VS2008,VC10对应VS2010. 下面切入正题: 首先下载PHP的源代码,注意你下载的源代码也要跟你Windows上的PHP可执行文件是同一个版本.例如我的是5.4.31RC1. 下载ImageMagi

linux上备份Oracle时EXP-00091的错误解决方法

unix/linux上备份Oracle时EXP-00091的错误解决方法 unix/linux上备份数据时的错误解决方法 EXP-00091: Exporting questionable statistics.解决方法 今日EXP数据发现如下错误: EXP-00091: Exporting questionable statistics. . . exporting table                     TAXVOU3129    2904185 rows exported EX

在linux环境下编译运行OpenCV程序的两种方法

原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式. 首先我先粘上我测试的代码吧,文件名为Test.c 1 #include <highgui.h> 2 3 int main(int argc,char ** argv) { 4 5 IplImage* img = cvLoadImage

从Windows上传文件到Ubuntu的一种方法

由于学习需要,需要从Windows操作系统上传文件到Ubuntu中,度娘上的方法很多,这只是其中一种--借助WinSCP软件,优点:软件易于安装.整体操作非常简单.不说了,先上文.. 1.安装WinSCP  软件下载地址:http://rj.baidu.com/soft/detail/15150.html?ald 2.通过命令:ifconfig  在Ubuntu上查看IP地址: 3.在Windows操作系统上打开winSCP软件,登录winSCP 4.登录winSCP之后在windows和Ubu