如何顺利编译.Net Micro Framework Porting Kit 4.1
//=====================================================================
//TITLE:
// 如何顺利编译.Net Micro Framework Porting Kit 4.1
//AUTHOR:
// norains
//DATE:
// Sunday 19-September-2010
//Environment:
// NULL
//=====================================================================
如果你按照叶帆的这篇《【.Net Micro Framework PortingKit - 01】移植初步:环境搭建》(http://blog.csdn.net/yefanqiu/archive/2010/01/01/5117554.aspx)的步骤能够顺利地完成第五步,那么恭喜你,这篇文章你也可以不用看了,爱干嘛就干嘛去~不过,如果你不幸没有完成编译的使命,那不妨看看这篇文章,说不定你的结症就在这里。
首先,你必须要将PortingKit安装在一个没有任何空格的路径中。比如说,像这种“D:/Program Files/Microsoft .NET Micro Framework”路径是完全不合格的。如果你不幸安装到了类似的路径,那么在编译的时候,你会连哭的心都有,结局注定是一个悲剧。我就在这问题上纠结了半天,就差没撞墙了。这个问题的根源是在于微软的一些文件中的命令是用空格当参数的分隔符的,当然你也可以更改这些相应的文件,不过由此带来的劳动量,以及后续微软更新时的麻烦,我觉得还是放弃,直接安装到无空格的路径比较为好。
其次,在调用cmd文件设置环境变量时,除非你的MDK是安装在默认的C:/KEIL/ARM,否则在调用cmd文件时应该带有路径参数,比如:
setenv_MDK3.80a.cmd "D:/Program Files/Keil/ARM"
不过这个路径方式在没有更改过setenv_base.cmd文件的情况下是行不通的,因为你的MDK装在了带有空格的路径。虽然可以通过这篇文章《setenv_base.cmd文件的修正》(http://blog.csdn.net/norains/archive/2010/09/17/5891452.aspx)来强制对cmd进行带有空格的路径的修正,虽然能够正常设置环境变量,但最后编译Porting Kit的solution的时候,还是会有错误。所以,MDK的安装路径依然还得没有空格。不过,Porting Kit也只是调用其相应的编译器而已,如果不想重新安装MDK,可以将原来MDK拷贝到一个没有空格的路径,然后再输入新的路径即可,如:
setenv_MDK3.80a.cmd "D:/NewPath/Keil/ARM"
当这两步都弄好之后,你就可以在命令行中调用cmd文件设置环境变量,然后输入:msbuild pk.proj /t:build /p:flavor=release;memory=ram进行编译了。应该来说,这时候就能够正常编译了。
最后说一点有意思的话题,PortingKit中的C#工程文件直接双击是打不开的。比如, 双击./Framework/Tools/BuildTasks/BuildTasks.csproj,会提示无法找到Microsoft.SPOT.CSharp.Host.Targets文件,即使你确认在环境变量中已经设置了SPOCLIENT。其实这有个小技巧,如果你真的想在VS2010中打开这个工程,那么你应该在命令行中设置完毕环境变量之后,再在命令行中输入:devenv BuildTasks.csproj,这时候才能正常打开该工程。