■
来週の月曜の夜(たぶん)に、多分新宿あたりでmono meetingをやります(という口実のもと、単に晩飯を食いに集まるだけです)。もし参加したいという方がいたら(物好きですね!)atsushi@ximian.comまでメール下さい。日本人は今んとこ僕だけです。英語が喋れる必要はありません。ていうか僕がほとんど日本語しかしゃべれないし…
Path.InvalidPathChars
ヤバいねえコレは…1
XPathNavigator.ReadSubtree()
地味にいろんなバグがありそう。
using System;
using System.Xml;
using System.Xml.XPath;
public class Tset
{
public static void Main ()
{
XmlDocument doc = new XmlDocument ();
doc.LoadXml ("
XPathNavigator nav = doc.CreateNavigator ();
XmlReader r = nav.ReadSubtree ();
r.Read ();
r.MoveToFirstAttribute ();
r.ReadAttributeValue ();
Console.WriteLine (r.Name);
Console.WriteLine (r.NamespaceURI);
}
}
別に余所の畑だけの話ではないけど、MSってXPathNavigatorの実装はあんまし検証していないような気がする。.NET 1.xもやや弱かった。
DOMにもさまざまなバグがあって、いくつかmcsのソースにメモしてcommitしたら、Gertから、もしMSにreportしていなければ代わりにやっとくよ、と言われたので、それは有り難いとそのまま全部引き取ってもらった。
あと、これはバグではないのだけど2、たぶんDOMをヘビーにいじっている人は、GetElementById()の挙動が変わっていることに注意した方が良い。ドキュメント ツリーからdetachされたサブツリー内のIDにヒットしたりしなかったりで、動作が変わっている。どう変わったのかは忘れたけど、今日(というか昨日)mcsにcommitしたコードのうち、[Category(“NotDotNet”)]という属性が追加されたテストは、.NET 2.0になってから動かなくなった奴だ。
System.Orgyを正当化するextern alias
アセンブリの相互参照(orgy)は、好ましくはないけど、別に禁じられているわけでもない。かくして、.NET 2.0では、System.dllとSystem.Configuration.dllの間で、好ましくないその因縁が深まっているらしい。3
System.Configuration.dllをビルドするには、System.dllをビルドしなければならないのだが、System.dllにあるいくつかのクラス、たとえばSystem.Net.Configuration.ModuleElementには、System.Configuration.dllのSystem.Configuration.ConfigurationElementが必要になる。4
めんどっちいのは、これをbootstrapとfullのビルド2回転で実現しようとすると、System.Configuration.dllをビルドするときに、bootstrapのSystem.dllにあるNameValueCollectionとfullのSystem.dllにあるNameValueCollectionの2つが区別できないというエラーが出る(CS0029の一類型)。
それで、解決方法を探していて、extern aliasとゆー非常にマイナーな機能を見つけたのだけど、mcsのサポートはまだ完全ではないようだ。
これと関係してTypeForwardedToAttributeというのも気になっていて、MSこれ使ってるんじゃねーの?と思うのだけど、corcompareの結果を見る限り全く使っていないようだ追記のとおりで、実際には不明。5
System.Runtime.CompilerServicesには、やっつけ用のクラスがいろいろ増えていそうな予感がする。
追記:
生成されたdllに残らないというのでビンゴらしい。
using System.Runtime.CompilerServices;
using System;
using System.Reflection;
[assembly:CLSCompliant (true)]
[assembly:TypeForwardedTo (typeof (string))]
public class Test
{
public static void Main ()
{
foreach (Attribute a in
Assembly.GetExecutingAssembly ()
.GetCustomAttributes (true))
Console.WriteLine (a.GetType ());
}
}
$ csc typeforwardedtoattribute.cs -nologo
$ mono typeforwardedtoattribute.exe
System.Runtime.CompilerServices.RuntimeCompatibilityAttribute
System.Runtime.CompilerServices.CompilationRelaxationsAttribute
System.CLSCompliantAttribute
$ gmcs typeforwardedtoattribute.cs
$ mono typeforwardedtoattribute.exe
System.CLSCompliantAttribute
System.Runtime.CompilerServices.RuntimeCompatibilityAttribute
System.Runtime.CompilerServices.TypeForwardedToAttribute
コメント
akiramei — 12/16/2005 00:39:12
物好きですね!
Mono好きと掛けているのね?(^^;
atsushieno — 12/16/2005 00:45:34
ぁぁっ無粋なツッコミを!!
うちのDuncanが「日本にいけばakirameiさんに会えるかな?」って言ってましたよ ;-) <マジ話
ladybug — 12/16/2005 12:14:49
平日じゃなければコッソリ眺めにいくところなんだけど。
atsushieno — 12/16/2005 12:31:12
そうなんですよねー平日は他のハカーでも厳しい人がいるんですよ。申し訳ないです。どーしてもDuncanの時間が確保できなくて。
akiramei — 12/17/2005 09:13:33
職場が新宿なので場所的には好都合なんですが、その日は納品前日なので脱出は厳しいかも。(^^; 覗きに行きたいところなんですけどね〜
atsushieno — 12/18/2005 00:02:04
うはh では連絡メールだけccしますので、時間が取れたら(&気力が残っていたら^^;)おいで下さい〜