C# と .NET Framework 4 を主にWindows Formのアプリケーション開発について

C#.NETでいく?で“SS”タグの付いているブログ記事

2008年12月 6日

Mono 2.0.1のバグ修正一覧 Mono 2.0.1のバグ修正一覧

image

Mono 2.0の修正版2.0.1が2008/10/24にリリースされています。

Mono 2.0.1のバグ修正一覧(mono-projectリリースノートより)

    • Bug 426309 - MSのコンパイラで作成したバイナリがクラッシュする
    • Bug 431304 - reverse invoke via COM when marshaling a BSTR by ref retval fails to convert MonoString to native string.
    • Bug 433908 - Npsql と pooling での問題
    • Bug 431811 - Mono 2.0ランタイムでProcess.HasExitedが動作しない
    • Bug 434620 - 構造体がおかしい(Structure Corruption ってオイ)
    • Bug 428406 - 複数次元のJAG配列でInvalidCastExceptionが発生
    • Bug 434544 - JIT / Runtime corruption
    • Bug 432673 - コンストラクタに無効なILコード
    • Bug 426264 - Function return inconsistent ulong value, which has dummy parameter of a Class and a ulong
    • Bug 430963 - Optimization - CachedRawResponse で使用しない32kbのバッファをアロケートしないようにした
    • Bug 430040 - TcpClient が連続して1000コネクションの後切断
    • Bug 435549 - Response.Cache.SetCacheability(HttpCacheability.Public)でのメモリーリーク
    • Bug 432466 - NPIV screens in an NVP deployment cannot assume presence of ZOS
    • Bug 433741 - OdbcDataReader.GetBytes() のパッチ
    • Bug 416462 - Remoting takeで4KBか8KBの文字列を渡すと非常に時間がかかる
    • Bug 437691 - System.InvalidCastException: Cannot cast from source type to destination type. at System.Web.HttpApplicationFactory.AttachEvents (System.Web.HttpApplication app)
    • Bug 437289 - EnableSessionState="False" でContext.ApplicationInstance.Sessionにアクセスすると例外が発生
    • ランタイム アセンブリのロードコードのデッドロックを修正
    • amd64 shutdown crashに対する回避策を追加
    • 1.9.xでディグレードしたファイナライザが呼ばれない問題の修正
    • 親プロセスがランタイムに必要なリアルタイムシグナルを無効にする場合の回避策を追加

Mono-2.0にしているならアップデートしたほうがよさそうですね。

2007年4月28日

PXEブートでDebian Etchをインストール PXEブートでDebian Etchをインストール

Virtual PC 2007上のbootpサーバを構築してFDDもCD-ROM Driveも無いノートPCにEtchをインストールします。

172.31.2.0/24
ルータ
+---- eth0[NotePC ]eth1 ---+
+---- eth0[VirtualPC]eth1 ---+
HUB
192.168.0.0/24


NotePCは最終的にVPNのブリッジにするため、PCMCIAのNICを追加しています。

VirtualPC上にbootpサーバの構築

VirtualPCのホストPCは、NICが2枚入っているので、いちいち切り替えなくて済むように上のような構成にしました。 作業手順は次のようになります。
  1. Etchのインストールイメージのダウンロード
  2. Etchのインストール
  3. dhcpサーバのインストール
  4. bootpサーバのインストール
  5. 設定の有効化

続きを読む "PXEブートでDebian Etchをインストール"

2007年4月24日

Debian 4.0 Etchのインストール Debian 4.0 Etchのインストール

Dynabook SS 1610 にDebianのインストールをしたのですが、思いのほか手間取りました。インストールメディアとしては次の順で試した。


  1. CD-ROMからインストール
    Debianサイトのetch のインストールページから、netinst用のCDイメージをダウンロードしてCDに焼きインストールを行いました。
    手元にあった古いDynabook SS 3010のオプションCD-DriveではWindows2000/XPのインストールを行えるが、Debian Etchのインストールはできなかった。bootはするがインストーラが開始しない。
    ちなみに、後日試した更に新しいDynabook 2010用のUSB-DVDドライブ(品番 IPCS063A)ではすんなりインストールできました。
    ちゃんちゃん。

  2. FDからインストール
    同様に上記サイトの”その他イメージ”からfloppyイメージをダウンロードしてFDを作成してインストールを試したがこれもダメ。
    これも手元にあったDynabook G6付属のUSB-FDDドライブで試したがCD-ROMのときと同じ状態でrootイメージ読み込み後インストーラが起動しない。

  3. USBメモリからインストール
    Dynabook SS 1610 はUSBメディアからのブートは出来ないようで、BIOSの設定や[F12]キーでのブートデバイスの選択でもだめでした。

  4. ネットワークブートでインストール
    1610はネットワークブートが選択出来るため、Virtual PC上にEtchをインストールしてbootpサーバを構築してインストールを試し、これでうまくいきました。
    インストール方法については次回。

  5. Windows XP上からインストール
    インストールがうまくいってから見つけたのですが、ttp://goodbye-microsoft.com/ でダウンロード可能なwin32用のインストーラでWindowsとDebianのデュアルブート環境が簡単に作れます。(ほんとに入ってしまうのでhを抜いてあります)
    VirtualPC 2007上で試したのですがリブート後DebianのGUIインストーラが起動します。

2006年8月 1日

NDoc 2.0 開発中止 NDoc 2.0 開発中止

KazzzさんのNDoc2は死亡?で知ったのですが、残念ですが終わってしまったようです。

Kazzzさんの.NET 2.0にNDocを対応させる記事を参考に対処して完成を待っていたのですが、Sandcastleが中止の一因というのも皮肉なものです。

どうも、SourceGridも .NET Framework 2.0対応は余り進んでいないようでこっちの方も気になっています。 
ただ、ManagedUxThemeの部分以外は簡単にビルドできるので、2.0への移行と共に機能強化を予定しているのかもしれません。
(ManagedUxThemeに関しては、___CxxCallUnwindDtorのリンク エラーに対処すればとりあえず動作しています。)

余談ですが、昨日からアクセス数が急増していて驚きました。(多くがトラックバック経由だと思います)
「日本ではドキュメンテーションコンパイラに需要が無いのか」と書いてしまいましたが、そうではなかったようです。
3つ一気に初トラックバックでどうすれば良いのかアタフタしています。

2006年7月30日

Sandcastle CTP版 を試した Sandcastle CTP版 を試した

最新情報:Sandcastleまとめページ

早速サンドキャッスル(Sandcastle) CTP版を試してみた。 NDoc 2.0が止まっている今となっては、サンドキャッスルに大きな期待をしている。それにしても、日本語での情報が余りに少ないのはどうなのだろう。 日本では余り需要が無いのだろうか。 GrapeCityをはじめとする.NET コンポーネントを販売している企業も余り多くはないと思うが、システム開発関連でもドキュメント生成は必要だと思うのだが...。 まあ、自分が使いたい(仕事を含めて)ということで、早速ダウンロードして試してみた。

インストールを行うと、少なくとも環境変数PATHは変更されるようです。
ミッション クリティカルな環境に入れないように注意する必要があります。

Sandcastleの動作要件

Sandcastle CTP版を動作させるには、.NET Framework 2.0とHTML Help Workshop が必要となります。
.NET Framework 2.0 は Windows Updateからインストールすることが出来ます。
HTML Help Workshop は CHM の生成に使用されるための次のURLからダウンロードしてインストールしておきます。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp

ダウンロード

Sancastle CTP版は次のURLからダウンロードしてインストールします。 http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&displaylang=en

/// によりコメントされたC#のコードを元にCHMを生成してみる

試しに、ここまでのMicroRssReaderのコードを使用してヘルプを生成してみます。 MicroRssReaderのプロジェクトはXMLドキュメントを生成するように設定されていないため、まずプロジェクトを変更します。

続きを読む "Sandcastle CTP版 を試した"

2006年7月 8日

.Net Framework や VisualStudio の Beta版/CTP版のアンインストール .Net Framework や VisualStudio の Beta版/CTP版のアンインストール

VisualStudio 2005(各エディション)や.NET Framework 2.0 の正式版をインストールする前に、インストール済みのベータ版やプレビュー版をアンインストールしておく必要がある。

このときアンインストーラが動作しなかったり、正しくアンインストールされなかったりする場合がある。
例えば初歩的なミスであるが次のようなケースがあった。

  • ASP.NET2.0に移行するためWebサーバのWindows Update (または、Microsoft Update) で .NET Framework 2.0 のインストールが失敗する。
    IISのサイトの設定を見ると.NET 2.0がインストールされているように見えるが、Windows Updateに表示される。 エラーコードで調べても有益な情報が見つからない・・・dotnetfxでも上書きできない、システムごと入れなおすしかないのだろうか。

結局、かなり前にASP.NET 2.0を試すため、Webサーバに.NET Framework 2.0 Betaがインストールしていた事が原因だった。
ベータ版をアンインストールすれば良いのは分かるがアンインストーラが無い。

前置きが長くなったが、このような場合Micorosoftが提供している「アンインストールツール」を使用して.NET Framework 2.0 Beta を消すことが出来る。

このアンインストールツールで消した後であれば、Windows Updateでのインストールが成功する。

続きを読む ".Net Framework や VisualStudio の Beta版/CTP版のアンインストール"

2006年7月 4日

.NET Framework 1.1 → 2.0 ( Managed C++ ) ___CxxCallUnwindDtorの対処 .NET Framework 1.1 → 2.0 ( Managed C++ ) ___CxxCallUnwindDtorの対処

.NET Framework 1.1 から .NET Framework 2.0 に移行するときの覚書。

VisualStudio 2005のプロジェクトコンバータを使用することでC#のプロジェクトは、ほとんど問題なく自動コンバートされるが、Managed C++はそうは行かない。
これは、C++ に関して大きな変更があったためで、2.0での管理コードを生成するC++は C++/CLI と呼ばれるものに生まれ変わっている。

このため、VisualStudio 2005のC++プロジェクトではManaged部分について新旧どちらを使うかの設定があり、変換されたプロジェクトは旧モードになっている。

さて実際に動いていたプロジェクトを変換してビルドすると、___CxxCallUnwindDtorのエラーが出て困った。googleでもほとんど情報がない。

最終的に次の方法で対処した。(ネタ元多分これ
 ・まず、プロジェクトのプロパティーを開き、リンカの項目を開きます。
 ・次に、追加の依存の項目に msvcmrtd.lib を追加します。

あまりに情報がないためこの方法で良いのか悪いのか判断がつかないため、自己の判断と責任でお願いします。

個人的には __gc のようなツギハギで自分で自分に落とし穴を掘るようなコードがいやで可能な限り避けたため、当たった問題は少なかった。