6

我尝试使用以下说明编译我的项目,因此出现以下错误。

我的剧本;

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 Engine 版本 12.0 Mono,版本 3.2.8.0 版权所有 (C) 2005-2013 各种 Mono 作者

构建开始于 2015 年 1 月 6 日 18:31:01。


项目“/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net.sln”(默认目标):目标 ValidateSolutionConfiguration:构建解决方案配置“调试|任何 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"安装"/home/ziyasal/gthb/InfluxDB.Net/InfluxDB.Net/packages.config"-source""-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”对应的框架。框架组件引用将从 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".-- FAILED Task "MSBuild" 执行 -- FAILED Done build target "Build" in project "/home/ziyasal/gthb/InfluxDB.Net/InfluxDB .Net.sln".-- 失败完成建设项目 "/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

4

2 回答 2

12

最后,我找到了解决方案(解决方法)。我将 .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

它现在编译得很好!

于 2015-01-07T15:39:16.483 回答
2

该错误消息表明您没有安装可移植类库引用程序集。

我会考虑使用更高版本的 Mono 3.10 并安装 referenceassemblies-pcl 包。Mono 网站上有更多关于在 Linux 上使用 Mono 的详细说明。

http://www.mono-project.com/docs/getting-started/install/linux/

于 2015-01-07T15:20:19.703 回答