一个产品给end user的时候需要注重用户体验,一份源代码给程序员的时候也要注重一下用户体验啊 T T
真的能做到out-of-the-box exprience的源代码真是够少的。不过也正是这样才能磨炼出高手?之前要用VS2008编译boost已经快搞死我了。这两天要用一下Rotor也是,心里一直在念叨要是自己机上装的系统是英文版的Windows XP和Visual Studio 2005就好了。
T T
之前Jeremy Kuhne也提到了[url=http://blogs.msdn.com/jeremykuhne/archive/2008/02/19/sscli-2-0-and-visual-studio-2008.aspx]如何应对Visual Studio 2008来调整SSCLI 2.0的代码[/url],但是要在简体中文Windows XP下光是使用他所做的修改还不足够。
首先,Jeremy似乎漏说了一点:他在\sscli20\win.env.bat里添加的这句:
[code]if "%ROTOR_WINSDKDIR%"=="" set ROTOR_WINSDKDIR=%WindowsSdkDir%[/code]
在系统没有设置这个环境变量的时候是起不到作用的。然而VC9里又没有PlatformSDK目录,这个配置就会失败……
于是,在环境变量里设置WindowsSdkDir,值为C:\Program Files\Microsoft SDKs\Windows\v6.0A
(或者机器上Windows SDK的实际安装位置,例如说装了Windows SDK 6.1的话路径会不同)
另外,还是在\sscli20\win.env.bat,我遇到了个奇怪的问题,在这行:
[code]set /A ROTOR_TOOLSET_VERSION=%ROTOR_TOOLSET_VERSION%/10-60[/code]
会报错说“找不到操作数”。无法理解嗯。于是干脆把整个toolset detection都REM掉了,直接换上一句:
[code]set ROTOR_TOOLSET_VERSION=90[/code]
OTL。
接下来,在\sscli20\env.core.pl里,这行:
[code]if (! ($platform_os_version =~ s/\nMicrosoft.*\[Version +([0-9]+\.[0-9]+)\..*\]/$1/g)) {[/code]
糟糕的是,我这简体中文的XP在输入ver命令的时候得到的是这样的结果:
[code]Microsoft Windows XP [版本 5.1.2600][/code]
没有那个"Version",于是这个正则表达式会匹配失败。
解决的办法是把"Version"换成“版本”:
[code]if (! ($platform_os_version =~ s/\nMicrosoft.*\[版本 +([0-9]+\.[0-9]+)\..*\]/$1/g)) {[/code]
============================================================================
\sscli20\clr\vm\thread.cpp
这个文件里似乎有好几个超过0x80的字符。太奇怪了吧这个……难道是UTF-8的?但是没有UTF-8的BOM。反正我在error里看到这个了:
[quote]vm\threads.cpp : error C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss[/quote]
同样的问题也发生在了\sscli20\clr\vm\win32threadpool.cpp
[quote]vm\win32threadpool.cpp(2582) : error C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss[/quote]
实在受不了了,写了个简单的C#程序来检测是不是有非ASCII字符在代码中出现:
cp.cs:
然后写个Perl或者Ruby脚本来看看输出结果就知道有没有文件出问题了……不过看到也就是这两个文件问题严重。改了这两个文件之后总算能build完了,虽然中间还是有些cannot find header file之类的错误。
===========================================================================
正好,拿上面的cp.cs来测试下刚build完的SSCLI 2.0的csc与clix:
[quote]H:\sscli20>csc cp.cs
Microsoft (R) Shared Source CLI C# Compiler version 2.0.0001
for Microsoft (R) Shared Source CLI version 2.0.0
Copyright (C) Microsoft Corporation. All rights reserved.
H:\sscli20>clix cp env.core.pl
Line 552: 0xB0
Line 552: 0xE6
Line 552: 0xB1
Line 552: 0xBE
Line 553: 0xB0
Line 553: 0xE6
Line 553: 0xB1
Line 553: 0xBE[/quote]
env.core.pl这两行就是我把Version改成“版本”并添加注释的地方。Good,暂时看来运行得还算正常。
接下来可以开始hack我要修改的那部分代码了……这逃逸计算的问题我就是想看看在实际的C#编译器里能不能运行起来……
===========================================================================
另外,这边[url=http://samgentile.com/blogs/samgentile/pages/a-night-with-rotor-and-rotor-resources.aspx]A Night With Rotor and Rotor Resources[/url]也有些相关的build问题。不过他遇到的问题我没遇到就是了……留着链接参考用。
更新:
在博客园看到一个链接帖,顺便记下来
[url=http://www.cnblogs.com/lbq1221119/archive/2008/11/12/1331912.html]Build SSCLI20 under VS2008 full Document (完全手册)[/url]
真的能做到out-of-the-box exprience的源代码真是够少的。不过也正是这样才能磨炼出高手?之前要用VS2008编译boost已经快搞死我了。这两天要用一下Rotor也是,心里一直在念叨要是自己机上装的系统是英文版的Windows XP和Visual Studio 2005就好了。
T T
之前Jeremy Kuhne也提到了[url=http://blogs.msdn.com/jeremykuhne/archive/2008/02/19/sscli-2-0-and-visual-studio-2008.aspx]如何应对Visual Studio 2008来调整SSCLI 2.0的代码[/url],但是要在简体中文Windows XP下光是使用他所做的修改还不足够。
首先,Jeremy似乎漏说了一点:他在\sscli20\win.env.bat里添加的这句:
[code]if "%ROTOR_WINSDKDIR%"=="" set ROTOR_WINSDKDIR=%WindowsSdkDir%[/code]
在系统没有设置这个环境变量的时候是起不到作用的。然而VC9里又没有PlatformSDK目录,这个配置就会失败……
于是,在环境变量里设置WindowsSdkDir,值为C:\Program Files\Microsoft SDKs\Windows\v6.0A
(或者机器上Windows SDK的实际安装位置,例如说装了Windows SDK 6.1的话路径会不同)
另外,还是在\sscli20\win.env.bat,我遇到了个奇怪的问题,在这行:
[code]set /A ROTOR_TOOLSET_VERSION=%ROTOR_TOOLSET_VERSION%/10-60[/code]
会报错说“找不到操作数”。无法理解嗯。于是干脆把整个toolset detection都REM掉了,直接换上一句:
[code]set ROTOR_TOOLSET_VERSION=90[/code]
OTL。
接下来,在\sscli20\env.core.pl里,这行:
[code]if (! ($platform_os_version =~ s/\nMicrosoft.*\[Version +([0-9]+\.[0-9]+)\..*\]/$1/g)) {[/code]
糟糕的是,我这简体中文的XP在输入ver命令的时候得到的是这样的结果:
[code]Microsoft Windows XP [版本 5.1.2600][/code]
没有那个"Version",于是这个正则表达式会匹配失败。
解决的办法是把"Version"换成“版本”:
[code]if (! ($platform_os_version =~ s/\nMicrosoft.*\[版本 +([0-9]+\.[0-9]+)\..*\]/$1/g)) {[/code]
============================================================================
\sscli20\clr\vm\thread.cpp
这个文件里似乎有好几个超过0x80的字符。太奇怪了吧这个……难道是UTF-8的?但是没有UTF-8的BOM。反正我在error里看到这个了:
[quote]vm\threads.cpp : error C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss[/quote]
同样的问题也发生在了\sscli20\clr\vm\win32threadpool.cpp
[quote]vm\win32threadpool.cpp(2582) : error C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss[/quote]
实在受不了了,写了个简单的C#程序来检测是不是有非ASCII字符在代码中出现:
cp.cs:
using System;
using System.IO;
sealed class CP {
static void Main( string[ ] args ) {
int lineno = 1;
using ( FileStream fs = File.OpenRead( args[0] ) ) {
while ( fs.CanRead ) {
int b = fs.ReadByte();
if ( b < 0 ) break;
else if ( b == 0x0A ) ++lineno;
else if ( b > 0x080 ) {
Console.WriteLine( "Line {0}: 0x{1:X}", lineno, b );
}
}
}
}
}
然后写个Perl或者Ruby脚本来看看输出结果就知道有没有文件出问题了……不过看到也就是这两个文件问题严重。改了这两个文件之后总算能build完了,虽然中间还是有些cannot find header file之类的错误。
===========================================================================
正好,拿上面的cp.cs来测试下刚build完的SSCLI 2.0的csc与clix:
[quote]H:\sscli20>csc cp.cs
Microsoft (R) Shared Source CLI C# Compiler version 2.0.0001
for Microsoft (R) Shared Source CLI version 2.0.0
Copyright (C) Microsoft Corporation. All rights reserved.
H:\sscli20>clix cp env.core.pl
Line 552: 0xB0
Line 552: 0xE6
Line 552: 0xB1
Line 552: 0xBE
Line 553: 0xB0
Line 553: 0xE6
Line 553: 0xB1
Line 553: 0xBE[/quote]
env.core.pl这两行就是我把Version改成“版本”并添加注释的地方。Good,暂时看来运行得还算正常。
接下来可以开始hack我要修改的那部分代码了……这逃逸计算的问题我就是想看看在实际的C#编译器里能不能运行起来……
===========================================================================
另外,这边[url=http://samgentile.com/blogs/samgentile/pages/a-night-with-rotor-and-rotor-resources.aspx]A Night With Rotor and Rotor Resources[/url]也有些相关的build问题。不过他遇到的问题我没遇到就是了……留着链接参考用。
更新:
在博客园看到一个链接帖,顺便记下来
[url=http://www.cnblogs.com/lbq1221119/archive/2008/11/12/1331912.html]Build SSCLI20 under VS2008 full Document (完全手册)[/url]