如何手动安装Xamarin与Xamarin for VisualStudio

如何手动安装Xamarin与Xamarin for VisualStudio,第1张

Android SDk下载安装结束之后,在开始菜单中找到SDK Manager,使用管理员权限打开(重要)

选中下列项目并下载:

Android SDK Tools(这里会提示有新版本,所以你可以不选这一项)

Android SDK Platform-Tools

Android SDK Build-Tools

Android 5.0.1(API 21)

Android 4.4.2(API 19)

Android 4.0.3(API 15)

(说明:Xamarin文档中说明必须要安装API 15+19+21,实际上是你针对哪个版本开发,装哪个版本就可以了。但是至少要选上一个,最好是API 21或以上,要不然可能没办法正常编慧圆雀译APP)

其他可以看心情,但并不是必装:

其他版本SDK,比如API 23,Extras里面的Google USB Driver, Intel x86 Emulator Accelerator等等。

如果你要运行Android SDK自带的模拟器(Google出品)而不是Visual Studio Android Emulator(微软出品,需要HyperV),那么推荐装上Intel x86 Emulator Accelerator。

Intel x86 Emulator Accelerator下载完成后并不会自动安装,你需要浏览到 AndoridSDK目录下找到一个叫intelhaxm-android.exe的文件手动双击安装。完整路径大概是下面这样:

C:\Program Files (x86)\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe

Android NDK

NDK是压缩包的形式,没有安装文件。

下载后把NDK解压到Android SDK旁边,比如C:\Program files(x86)\Android\NDK_r10e,Xamarin到时能自己找到

GTK#

下载后双击启动,跟随向导安装上即可。

Xamarin for VisualStudio

在VS里面直接使用Xamarin,这东西以前可是收费的,现在免费了,微软大法好啊,装装装。下载后双击启动,跟随向导安装上即可。前早

这个安装包里面包括了Xamarin一系列平台SDK,即腔手使你不使用VS开发Xamarin也得装上这个包。

Xamarin Studio

一个独立的C# IDE。下载后双击启动,跟随向导安装上即可。

我们现从当前的版本(当我写这篇文章时,Mono发布的版本是3.4.0)改汪毁构建,然后再从git的代码库中构建最新的版本。

主要步骤如下:

安装预编译的Mono

安装&配置Cygwin

下载并解压Mono的源代码

构建Mono

修改 Cygwin/Mono 来解决构建过程中出现的问题

安装 Mono 并修改安装配置

针对Xamarin Studio的一些修改和配置

从git下载源代码,并构建Mono

这个步骤在Windows 8.1 64位的系统下测试可用。

安核备装编译好的Mono执行文件

一个稳定并完成编译的Mono 3.2.3可以在这里下载。下载并安装它。

从开始栏打开命令行,之后用一下命令检查它是否正常运行着:

mono --version

你应该看到以下信息出现,并且确定版本是3.2.3:

C:\Program Files (x86)\Mono-3.2.3>mono --version

Mono JIT compiler version 2.10.9 (tarball)

Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-pro

ject.com

TLS: normal

SIGSEGV: normal

Notification: Thread + polling

Architecture: x86

Disabled: none

Misc: softdebug

LLVM: supported, not enabled.

GC:Included Boehm (with typed GC and Parallel Mark)

C:\Program Files (x86)\Mono-3.2.3>

安装Cygwin

下载并安装32位的Cygwin,这是一款在Windows下模拟Unix命令行的工具,我们用它来创建Mono。安装教程可以参考这里。

安装过程中,你会被提示要选择安装必要的包。我们创建Mono所需要的包并没有在默认安装设置里,所以我们要手动选择他们。

在Mono on Windows教程里提到了很多关于包的细节,这些包应该是:

autoconf, automake,bison, gcc-core, gcc-g++,mingw-gcc, libtool, make, python,

在《Final Ba ttle instructions》说提到了这些包:

gettext-devel, gettext, intltool, libiconv, pkg-config

另外,我们最好也要这些包:

wget, zip patch, openssh, vim

配置 Cygwin

有人通过 mono-dev 的邮件列表向我建议说,Cygwin 应该可以通过配置 "noacl" 选陵铅项来挂载系统的宿主系统的磁盘驱动器,否则的话,进行文件访问的时候可能会出问题。你可以点击此处还有此处了解详情。

从开始菜单中打开Cygwin,编辑 /etc/fstab 文件,并按照下面的指示 *** 作:

# For a description of the file format, see the Users Guide

# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:

none /cygdrive cygdrive binary,posix=0,user 0 0

把 noacl 选项添加进去,如下所示:

# For a description of the file format, see the Users Guide

# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

你可能需要关掉Cygwin并重新打开它来确保使刚才的修改生效。你可以通过运行 'mount' 命令看一下 'noacl'是否在其输出的内容里面,以便检查配置是否生效。

获取 Mono 发行包

当我写这篇文章的时候,Mono的最新发布版本是3.4.0。在Windows下,还没有该版本的安装包,最新的安装包是3.2.3。我们要在这里构建一个3.4.0版本的二进制包。

你可以从这里下载 Mono 3.4.0 的源代码,并把它解压到你的磁盘上。

你需要使用 Cygwin来下载和解压源码。你也可以在Cygwin外部做这些事,但是如果你不注意的话,可能会发现代码中的换行符(CRLF)被修改掉了,这很可能会导致构建失败。

所以,打开 Cygwin 终端命令行:

$ cd /cygdrive/c $ mkdir monosources$ cd monosources $ wget http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2

$ tar xjvf mono-3.4.0.tar.bz2

从Mono发布的压缩包中构建

构建Mono的时候可能会出现一些错误,如文件丢失,或者和Cygwin的头文件冲突等。如果出现错误,我们可以按照下面的说明来修正错误,但是我们现在要做的是开始构建Mono,看看我们能走到哪一步。

我们要给 Mono 3.4.0 指定一个目标文件夹,并且我们将要把它设置成安装目录。如下所示:

$ cd /cygdrive/c

$ mkdir monoinstall

$ cd monosources/mono-3.4.0

$ ./autogen.sh --prefix="C:\monoinstall" --with-preview=yes

注意:我们给 --prefix指定的是Win32指定的路径格式,而不是Cygwin或 *nix的路径格式。

Autogen应该顺利的完成,接下来我们就要配置构建命令了,如autogen推荐的那样:

$ ./configure --host=i686-pc-mingw32

在配置进程结束的时候,我们能够看到类型下面的一些输出:mcs source:mcs

Engine:

GC:sgen and bundled Boehm GC with typed GC and parallel mark

TLS: pthread

SIGALTSTACK: no

Engine:Building and using the JIT

oprofile: no

BigArrays: no

DTrace:no

LLVM Back End: no (dynamically loaded: no)

Libraries:

.NET 2.0/3.5: yes

.NET 4.0: yes

.NET 4.5: yes

MonoDroid: no

MonoTouch: no

Xamarin.Mac: no

JNI support: no

libgdiplus:assumed to be installed

zlib:

一旦配置结束,我们就可以用以下方式来开始构建进程了。

$ make

安装失败 #1 - PEXECUTION_STATE

第一个安装失败是由于在Mono中定义的 PEXECUTION_STATE 和在 Cygwin 中定义的同名变量冲突了。具体的错误输出信息类似下面这样:

/usr/i686-pc-mingw32/sys-root/mingw/include/ddk/ntapi.h:49:15:

error: conflicting types for 'PEXECUTION_STATE'

In file included from

/usr/i686-pc-mingw32/sys-root/mingw/include/windows.h:62:0,

from

/usr/i686-pc-mingw32/sys-root/mingw/include/winsock2.h:40,

from ../../mono/io-layer/io-layer.h:24,

from ../../mono/metadata/domain-internals.h:15,

from ../../mono/metadata/metadata-internals.h:8,

from ../../mono/metadata/class-internals.h:10,

from ../../mono/metadata/object-internals.h:8,

from process.c:16:

推荐的做法是修改 Cygwin的头文件,在Cygwin中可以通过以下方法修改 PEXECUTION_STATE 的定义:

$ nano /usr/i686-pc-mingw32/sys-root/mingw/include/ddk/ntapi.h

将下面的内容:

/* FIXME: Unknown definitions */

typedef PVOID POBJECT_TYPE_LIST

typedef PVOID PEXECUTION_STATE

typedef PVOID PLANGID

修改为:

/* FIXME: Unknown definitions */

typedef PVOID POBJECT_TYPE_LIST

typedef PVOID PEXECUTION_STATE_WORKAROUND

typedef PVOID PLANGID

现在可以重新开始编译进程了

$ make

安装构建 Mono 文件

等到编译顺利结束,你就可以将其安装到指定的目录了。

首先,要在Cygwin中挂载目标文件夹,如下所示:

$ mount "C:\monoinstall" /usr/local

注意:我发现,如果在编译之前就挂载目标文件夹,会得到一个和 libiconv 相关的错误。这可能和 'noacl' 有关系,所以,我建议大家还是等到编译顺利完成并且准备去安装的时候再去挂载目标文件夹。

安装失败 #2 -缺少目标文件

有一个丢失的文件应该是存在于Mono 3.4.0发行版tar包。有关详细信息,请参阅这里。

你需要手动地创建这个文件然后添加这个文件。

$ nano mcs/tools/xbuild/targets/Microsoft.Portable.Common.targets

这个文件必须包含下列内容

<Project xmlns=<a class="moz-txt-link-rfc2396E" href="http://schemas.microsoft.com/developer/msbuild/2003">"http://schemas.microsoft.com/developer/msbuild/2003">

<Import Project="..\Microsoft.Portable.Core.props" />

<Import Project="..\Microsoft.Portable.Core.targets" />

</Project>

安装这个文件

$ make install

修正了:安装问题 - mono.exe

出于某种原因,安装时可执行文件mon.exe无法复制到win32文件夹下。

这似乎是一个保留功能,可通过当前Mono安装被复制,

例如

copy C:\Program Files (x86)\Mono-3.2.3\bin\mono.exe to C:\monoinstall\bin

用此修复程序,你可以再windows下执行Mono,并且检查你的正确版本。打开一个Windows命令框中,键入

cd c:\monoinstall\bin

mono --version

你的应该会看到类似下面的结果

Mono JIT compiler version 3.4.0 (tarball)

Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com

TLS: normal

SIGSEGV: normal

Notification: Thread + polling

Architecture: x86

Disabled: none

Misc: softdebug

LLVM: supported, not enabled.

GC:sgen

修正:Xamarin Studio- 防止运行时的无关符号连接

如果你试图通过 Xamarin Studio 的Tools->Options,Projects->.NET Runtime添加Mono 3.4.0 runtime 时,将会失败并d出一个错误信息"Mono runtime not found"。

这是因为安装时有额外的符号连接文件被复制。

你可能并不希望在资源管理器或者命令框的dir命令中看到这些,尽管dir /a 应该显示它。

如果你在 Windows下删除这些有困难,可以使用 Cygwin terminal 然后键入下面命令

cd /cygdrive/monoinstall/bin

$ rm mono

现在你可以为 Xamarin Studio添加 runtime。

工作区:在Xamarin Studio下构建项目问题

(1)Xamarin Studio 使用Mono 3.x构建项目将会失败,错误信息是编译失败,未能找到"System.Globalization.SortVersion"类型。这种问题已经添加到反馈中并且不会在3.4.0中出现。

适用于旧版本Xamarin Studio的工作区请点击这里 参与讨论。

例如,使用你的帐户在 Xamarin.com的view all version里下载 Xamarin Studio 4.2.3。

(2)你可能随后得到一个关于UNC paths的编译错误。

error : Error building target GetReferenceAssemblyPaths: UNC paths should be of the form \\server\share

这种情况的出现与配置文件中额外的\\'s有关,请点击这里参与讨论。

解决方法是去除工作区中项目选项中的 "Use MSBuild engine",此时你就可以编译和调试程序。

在git仓库上构建Mono项目

编写代码的时间序列类似于3.4.0 release tarball的构建。随着时间的推移,已存在的版本会被标记,新版本会不断产生,因此我的建议是你在整个项目中一开始就使用同样的git hash去比对文件,验证编译版本(3.4.1)并且再次检查我们的主版本。

详细阐述上面所提及的,你需要安装一个Cygwin packages,并且修改PEXECUTION_STATE。

打开Cygwin terminal并键入如下命令

$ cd /cygdrive/c/monosources

$ git clone git://github.com/mono/mono.git

我们会和git一起验证 079c2e126f594c5a338a779c72a899951de38960。

你也可以选择验证这个

$ cd mono

$ git checkout 079c2e126f594c5a338a779c72a899951de38960

确保 /usr/local没有被挂载,否则你会得到一个 libiconv-related 编译失败的信息。

$ umount /usr/local

然后设置和启动编译

$ ./autogen.sh --prefix="C:\monoinstall" --with-preview=yes

$ ./configure --host=i686-pc-mingw32

$ make

编译后你需要挂载 /usr/local,安装程序,添加 mono.exe并移除上面提到的符号链接

$ mount "C:\monoinstall" /usr/local

$ make install

$ cd /cygdrive/c/monoinstall/bin

$ rm mono

$ cp /cygdrive/c/Program Files (x86)/Mono-3.2.3/bin/mono.exe /cygdrive/c/monoinstall/bin

这时你已经拥有最新的和最优秀的 Mono程序运行!你可以打开一个cmd窗口并且键入

C:\>cd c:\monoinstall\bin

C:\monoinstall\bin>mono --version

你现在可能期望用 Cygwin terminal 检查git的主版本并且编译最新的 Mono源码。

$ cd /cygdrive/c/monosources/mono

$ git checkout master


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12362437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存