Visual Studio 2008のユニットテストはNUnitでも実行できるらしい。
だからCruiseControl.NETの
ちなみに、NUnit2.2.9で確認。
例外をシリアライズする方法
.NET Remotingで例外も通信してくれないかと調べていたら、例外をシリアル化・逆シリアル化できるようにすればいいことがわかった。
http://msdn.microsoft.com/ja-jp/library/dd296859.aspx
↑を超参考に例外を以下のように定義する。
[Serializable()] public class MyException : ApplicationException { //普通に使うコンストラクタ public MyException() { } //逆シリアル化コンストラクタ public MyException(SerializationInfo info, StreamingContext context) : base(info, context) { } }
ポイントは、
例外にデータを持たせたい時には、もうひと工夫必要だけど、上記のページを見れば書いてあるので省略。
何が起きたんだろう?
CruiseControl.NETを使っていたら、Subversionのチェックアウト時に失敗していた。
リポジトリを直接たたいたら、こんなメッセージを発した。
svnadmin: ファイルシステム '../db' に対して環境を開いているときに Berkeley DB エラーが起きました
svnadmin: Invalid argument
svnadmin: bdb: DB_REGISTER limits each process to a single open DB_ENV
handle
いろいろいじっているうちにdumpできるようになっていた(svnadmin recover のおかげ?)ので、dumpとloadを使って別リポジトリにコピーし、問題のリポジトリは破棄した。
DTDを読ませない方法
MSXMLでの話みたい。
IXMLDOMDocument.resolveExternals
IXMLDOMDocument.validateOnParse
のプロパティ2つをfalseにするといいみたい。
<!DOCTYPE ... SYSTEM....
の行をコメントアウトしたら読めた。でも、けずったらまずいぜ。という場合に有効。
参考:
http://gurizuri0505.halfmoon.jp/develop/delphi/msxml_dtd
DelphiのApplication.ProcessMessage
.NETでは?
Application.DoEvents()
が正解。
TortoiseSVN 1.6.0とAnkhSVN
TortoiseSVN 1.6.0でチェックアウトしたソースコードをAnkhSVNで見ると、すべてのソースが「追加」扱いになってしまう。
↓
AnkhSVN-Daily Updateを適用したら解決した。