如何解决 Linux 上的 xbuild '.NETPortable,Version=v4.0,Profile=Profile344' 问题
How to solve xbuild '.NETPortable,Version=v4.0,Profile=Profile344' issue on Linux
我尝试按照以下说明编译 my project,所以出现以下错误。
我的脚本;
sudo apt-get install mono-complete
mozroots --import --sync
mkdir gthb
cd gthb/
git clone https://github.com/ziyasal/InfluxDB.Net.git
cd InfluxDB.Net/
mono .nuget/NuGet.exe install NUnit.Runners
mono .nuget/NuGet.exe restore InfluxDB.Net.sln
xbuild
输出;
XBuild 引擎版本 12.0
单声道,版本 3.2.8.0
版权所有 (C) 2005-2013 Various Mono authors
2015 年 1 月 6 日开始构建 18:31:01。
项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”(默认目标):
目标 ValidateSolutionConfiguration:
构建解决方案配置 "Debug|Any CPU"。
目标构建:
项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj”(默认目标):
目标 RestorePackages:
执行:mono --runtime=v4.0.30319 "/home/ziyasal/gthb/InfluxDB.Net/.nuget/NuGet.exe" install "/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/packages.config" -资源
"" -RequireConsent -solutionDir "/home/ziyasal/gthb/InfluxDB.Net/"
正在恢复 NuGet 包...
要防止 NuGet 在构建期间下载包,请打开 Visual Studio 选项对话框,单击包管理器节点并取消选中“允许 NuGet 下载”
丢失的包裹'。
目标 PrepareForBuild:
配置:调试平台:AnyCPU
已创建目录 "bin/Debug/"
已创建目录 "obj/Debug/"
目标 GetReferenceAssemblyPaths:
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets:警告:无法找到与目标框架名字对象“.NETPortable,Version=v4.0,Profile=Profile344”相对应的框架。框架屁股
embly 引用将从 GAC 解析,这可能不是预期的行为。
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets:错误:PCL 未安装参考程序集。
任务 "GetReferenceAssemblyPaths" 执行 -- 失败
在项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj”中完成构建目标 "GetReferenceAssemblyPaths"-- 失败
完成构建项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj”.-- 失败
任务 "MSBuild" 执行 -- 失败
在项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”中完成构建目标 "Build"。-- 失败
完成构建项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”.-- 失败
构建失败。
警告:
/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln(默认目标)->
(构建目标)->
/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj(默认目标)->
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets(GetReferenceAssemblyPaths 目标)->
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets: warning : Unable to find framework corresponding to the target framework moniker '.NETPortable,Version=v4.0,Profile=Profile344'. Frame
工作程序集引用将从 GAC 解析,这可能不是预期的行为。
错误:
/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln(默认目标)->
(构建目标)->
/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj(默认目标)->
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets(GetReferenceAssemblyPaths 目标)->
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets: error : PCL Reference Assemblies not installed.
1 Warning(s)
1 Error(s)
已用时间 00:00:03.8459340
错误消息表明您没有安装便携式 Class 库参考程序集。
我会考虑使用更高版本的 Mono 3.10 并安装 referenceassemblies-pcl 包。关于在 Linux.
上使用 Mono,Mono website 上有更详细的说明
http://www.mono-project.com/docs/getting-started/install/linux/
最后,我找到了解决方案(解决方法)。我将 .NETPortable (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable) 文件夹从我的 Win 框复制到 Linux 框 (/usr/lib/mono/xbuild-frameworks/).
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
A7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee
/etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-devel
sudo apt-get install mono-complete
sudo apt-get install referenceassemblies-pcl
#Import the root certificates using the mozroots tool
mozroots --import --sync
#UPDATE: referenceassemblies-pcl package installs required profiles!
#####DEPRECATED#######
#I uploaded .NET Portable folder to temporary place.
#sudo apt-get install p7zip-full
#wget https://dl.dropboxusercontent.com/u/33940399/NETPortable.7z
#Override existing
#sudo 7z x NETPortable.7z -o/usr/lib/mono/xbuild-frameworks/ -aoa
#####DEPRECATED#######
mono .nuget/NuGet.exe restore InfluxDB.Net.sln
xbuild
mono packages/NUnit.Runners.2.6.4/tools/nunit-console.exe
InfluxDB.Net.Tests/bin/Debug/InfluxDB.Net.Tests.dll
现在编译好了!
我尝试按照以下说明编译 my project,所以出现以下错误。
我的脚本;
sudo apt-get install mono-complete
mozroots --import --sync
mkdir gthb
cd gthb/
git clone https://github.com/ziyasal/InfluxDB.Net.git
cd InfluxDB.Net/
mono .nuget/NuGet.exe install NUnit.Runners
mono .nuget/NuGet.exe restore InfluxDB.Net.sln
xbuild
输出;
XBuild 引擎版本 12.0 单声道,版本 3.2.8.0 版权所有 (C) 2005-2013 Various Mono authors
2015 年 1 月 6 日开始构建 18:31:01。
项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”(默认目标): 目标 ValidateSolutionConfiguration: 构建解决方案配置 "Debug|Any CPU"。 目标构建: 项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj”(默认目标): 目标 RestorePackages: 执行:mono --runtime=v4.0.30319 "/home/ziyasal/gthb/InfluxDB.Net/.nuget/NuGet.exe" install "/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/packages.config" -资源 "" -RequireConsent -solutionDir "/home/ziyasal/gthb/InfluxDB.Net/" 正在恢复 NuGet 包... 要防止 NuGet 在构建期间下载包,请打开 Visual Studio 选项对话框,单击包管理器节点并取消选中“允许 NuGet 下载” 丢失的包裹'。 目标 PrepareForBuild: 配置:调试平台:AnyCPU 已创建目录 "bin/Debug/" 已创建目录 "obj/Debug/" 目标 GetReferenceAssemblyPaths: /usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets:警告:无法找到与目标框架名字对象“.NETPortable,Version=v4.0,Profile=Profile344”相对应的框架。框架屁股 embly 引用将从 GAC 解析,这可能不是预期的行为。 /usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets:错误:PCL 未安装参考程序集。 任务 "GetReferenceAssemblyPaths" 执行 -- 失败 在项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj”中完成构建目标 "GetReferenceAssemblyPaths"-- 失败 完成构建项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj”.-- 失败 任务 "MSBuild" 执行 -- 失败 在项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”中完成构建目标 "Build"。-- 失败 完成构建项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”.-- 失败
构建失败。
警告:
/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln(默认目标)-> (构建目标)-> /home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj(默认目标)-> /usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets(GetReferenceAssemblyPaths 目标)->
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets: warning : Unable to find framework corresponding to the target framework moniker '.NETPortable,Version=v4.0,Profile=Profile344'. Frame
工作程序集引用将从 GAC 解析,这可能不是预期的行为。
错误:
/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln(默认目标)-> (构建目标)-> /home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/InfluxDB.Net.csproj(默认目标)-> /usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets(GetReferenceAssemblyPaths 目标)->
/usr/lib/mono/xbuild/12.0/bin/Microsoft.Common.targets: error : PCL Reference Assemblies not installed.
1 Warning(s)
1 Error(s)
已用时间 00:00:03.8459340
错误消息表明您没有安装便携式 Class 库参考程序集。
我会考虑使用更高版本的 Mono 3.10 并安装 referenceassemblies-pcl 包。关于在 Linux.
上使用 Mono,Mono website 上有更详细的说明http://www.mono-project.com/docs/getting-started/install/linux/
最后,我找到了解决方案(解决方法)。我将 .NETPortable (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable) 文件夹从我的 Win 框复制到 Linux 框 (/usr/lib/mono/xbuild-frameworks/).
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
A7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee
/etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-devel
sudo apt-get install mono-complete
sudo apt-get install referenceassemblies-pcl
#Import the root certificates using the mozroots tool
mozroots --import --sync
#UPDATE: referenceassemblies-pcl package installs required profiles!
#####DEPRECATED#######
#I uploaded .NET Portable folder to temporary place.
#sudo apt-get install p7zip-full
#wget https://dl.dropboxusercontent.com/u/33940399/NETPortable.7z
#Override existing
#sudo 7z x NETPortable.7z -o/usr/lib/mono/xbuild-frameworks/ -aoa
#####DEPRECATED#######
mono .nuget/NuGet.exe restore InfluxDB.Net.sln
xbuild
mono packages/NUnit.Runners.2.6.4/tools/nunit-console.exe
InfluxDB.Net.Tests/bin/Debug/InfluxDB.Net.Tests.dll
现在编译好了!