Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 359|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    昨天 22:25
  • 签到天数: 790 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    722766
    发表于 2021-7-9 13:42:23 | 显示全部楼层 |阅读模式

    这两天尝试在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 root@server:/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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-11 12:37 , Processed in 1.125624 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表