2007年02月27日
ConfigurationManagerクラスのOpenExeConfigurationでの間違い
C#で、デフォルトの exe.config とは異なる構成ファイルをオープンしようと思い、
と書いてみたら、target が nullになってしまう。
configインスタンスは生成されているのに、おかしいなと思って、調べてみたら、config.FilePath プロパティが、@"C:\Gushwell\sample.dll.config.config" だった。
なんで、勝手に .config を付加するんだ! と思ったが、まあ、名前が、OpenExeConfiguration だから、しかたないか。
これは、単に、
@"C:\Gushwell\sample.dll"
とすればいいみたいだ。
ちなみに、おぎわら さんのページ
http://blogs.wankuma.com/ogiogi/archive/2006/07/28/34042.aspx
でも、おなじようなことが書いてあった...
ただ、現象的に異なるのは、おぎわらさんのページによると、
ConfigurationManager.OpenExeConfiguration()
の戻り値が null になっているということ。これは、おぎわらさんの勘違いだと思うけど...
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(@"C:\Gushwell\sample.dll.config");
target = config.GetSection(sectionName) as MySection;
と書いてみたら、target が nullになってしまう。
configインスタンスは生成されているのに、おかしいなと思って、調べてみたら、config.FilePath プロパティが、@"C:\Gushwell\sample.dll.config.config" だった。
なんで、勝手に .config を付加するんだ! と思ったが、まあ、名前が、OpenExeConfiguration だから、しかたないか。
これは、単に、
@"C:\Gushwell\sample.dll"
とすればいいみたいだ。
ちなみに、おぎわら さんのページ
http://blogs.wankuma.com/ogiogi/archive/2006/07/28/34042.aspx
でも、おなじようなことが書いてあった...
ただ、現象的に異なるのは、おぎわらさんのページによると、
ConfigurationManager.OpenExeConfiguration()
の戻り値が null になっているということ。これは、おぎわらさんの勘違いだと思うけど...
2007年02月25日
コメントが反映されない?
渋木宏明(ひどり) さんから、コメントが入っていたのだが、なぜか、Blogに反映されていない。
しかたないので、コメントを管理するページで、いったん、該当するコメントを「下書き」に保存したあと、再度、「公開」にしたら、ページに反映されました。これは、Libedoorブログのバグですかね。
追記
最初にアップした記事において、渋木さんの敬称が抜けていました。
ほんとうにごめんなさい。
しかたないので、コメントを管理するページで、いったん、該当するコメントを「下書き」に保存したあと、再度、「公開」にしたら、ページに反映されました。これは、Libedoorブログのバグですかね。
追記
最初にアップした記事において、渋木さんの敬称が抜けていました。
ほんとうにごめんなさい。
2007年02月22日
アクセスが増えている
しばらくぶりにこ、このブログのアクセス解析のページをみたら、2月になって、アクセス数が倍近く増えている。
どういった理由かは分からない。検索エンジンで、このブログが引っかかるようになったのかな?
まあ、どんな理由にせよ、喜ばしいことである。
どういった理由かは分からない。検索エンジンで、このブログが引っかかるようになったのかな?
まあ、どんな理由にせよ、喜ばしいことである。
2007年02月21日
自分自身のクラス名とメソッド名
備忘:C#で自分自身のクラス名とメソッド名を取得する方法。ついでに、アセンブリ名も
StackTrace クラスを使うと、こんなことができるんですね。
class MyClass {
public void TestMethod() {
string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
StackTrace st = new StackTrace(false);
StackFrame sf = st.GetFrame(0);
string className = sf.GetMethod().ReflectedType.FullNam
string methodName = sf.GetMethod().Name;
Console.WriteLine(assemblyName);
Console.WriteLine(className);
Console.WriteLine(methodName);
}
}
StackTrace クラスを使うと、こんなことができるんですね。
2007年02月19日
無線LANに接続できなくなってしまいました
何の設定変更もしていないのに、無線LANに接続できなくなってしまいました。
タスクトレイのアイコンには、「接続状態:限定または接続なし」とポップアップメッセージが表示されます。
「修復」ボタンを押して修復を試みましたが、なんどやっても、IPアドレスの取得に失敗しましたと、なってしまいます。
「シグナルは非常に強い」状態なので、ルータとPC間は接続できているようですし、ハードウェアデバイスも問題なしと表示されています。
PCを再起動しても変化なし。
もう一台のPCは、何の問題もなく、インターネットに接続できています。
気づかない内に設定を変えちゃったかなと設定を見直しましたが、特におかしなところはないようです。
結局、ブロードバンドルータの電源を入れ直したら接続できてしまいました。
うーーん、なんだったんだろう。
Googleで「無線LAN 限定または接続なし」で検索したら、多くのページがヒットしました。結構この問題で悩んでいる人が多いみたいですね。
タスクトレイのアイコンには、「接続状態:限定または接続なし」とポップアップメッセージが表示されます。
「修復」ボタンを押して修復を試みましたが、なんどやっても、IPアドレスの取得に失敗しましたと、なってしまいます。
「シグナルは非常に強い」状態なので、ルータとPC間は接続できているようですし、ハードウェアデバイスも問題なしと表示されています。
PCを再起動しても変化なし。
もう一台のPCは、何の問題もなく、インターネットに接続できています。
気づかない内に設定を変えちゃったかなと設定を見直しましたが、特におかしなところはないようです。
結局、ブロードバンドルータの電源を入れ直したら接続できてしまいました。
うーーん、なんだったんだろう。
Googleで「無線LAN 限定または接続なし」で検索したら、多くのページがヒットしました。結構この問題で悩んでいる人が多いみたいですね。
2007年02月18日
C#プログラミングレッスン 読者数1100名に
「C#プログラミングレッスン」の読者数が、1100名を超えました。
といっても、ほとんど反応らしい反応もないので、中身を読んでくれているのかどうかは疑わしいのですが、とにかく、読者数の増加は励みになります。
ただ、何を書いたらよいのか、話題を探すのに苦労していますし、モチベーションを維持するのも大変です。
最近は、C#というよりは、.NET Frameworkの解説みたくなってしまってますし、適度な分量で完結させるってのも、なかなか難しいです。
といっても、ほとんど反応らしい反応もないので、中身を読んでくれているのかどうかは疑わしいのですが、とにかく、読者数の増加は励みになります。
ただ、何を書いたらよいのか、話題を探すのに苦労していますし、モチベーションを維持するのも大変です。
最近は、C#というよりは、.NET Frameworkの解説みたくなってしまってますし、適度な分量で完結させるってのも、なかなか難しいです。
2007年02月16日
ETW(Event Tracing for Windows)
データ アクセスのトレース - ADO.NET 2.0 のトレース機能の概要からの抜粋です。
ETW とは?
Event Tracing for Windows は、Windows パフォーマンス モニタに比べてオーバヘッドの少ないトレースを提供することを目的としています。 通常、ETW の CPU 利用率は 5 パーセント以下で、毎秒 20,000 イベントまでのログをとることができます。 これはリアル タイムでのトレースを可能にするのに十分な速さです。 ETW はプロバイダベースのモデルを使用します。この場合、プロバイダはイベント システムにイベントを送信するシステム コンポーネントまたはアプリケーション コンポーネントです。 イベント プロバイダの例としては、Active Directory、IIS、ASP.NET などがあります。
これを読む限りかなり良さそうです。
ただ、いかんせん、資料が少なすぎです。本当に良いものならば、もっと日本語の資料を公開してほしいです。
ETW とは?
Event Tracing for Windows は、Windows パフォーマンス モニタに比べてオーバヘッドの少ないトレースを提供することを目的としています。 通常、ETW の CPU 利用率は 5 パーセント以下で、毎秒 20,000 イベントまでのログをとることができます。 これはリアル タイムでのトレースを可能にするのに十分な速さです。 ETW はプロバイダベースのモデルを使用します。この場合、プロバイダはイベント システムにイベントを送信するシステム コンポーネントまたはアプリケーション コンポーネントです。 イベント プロバイダの例としては、Active Directory、IIS、ASP.NET などがあります。
これを読む限りかなり良さそうです。
ただ、いかんせん、資料が少なすぎです。本当に良いものならば、もっと日本語の資料を公開してほしいです。
2007年02月15日
WMIのMethodInvokeの結果をキャストすると例外が発生する
http://msdn2.microsoft.com/ja-jp/library/ms257364(VS.80).aspx
に記載されているWMIサンプルコードの、一部を変更し、実行したところ、InvalidCastExceptionが発生します。
以下、C#のコードの一部。
※最後の2行以外は、サンプルコードそのままです。
ちなみに、最後の行を以下の2行に置き換えてみました。
すると、
System.Int32
10
が表示されますので、キャストできると思うのですが、キャストすることができません。
何か、大きな勘違いをしてるのかな?
に記載されているWMIサンプルコードの、一部を変更し、実行したところ、InvalidCastExceptionが発生します。
以下、C#のコードの一部。
ManagementObject classInstance = new ManagementObject("root\\CIMV2", "Win32_Service.Name='PlugPlay'", null);ManagementBaseObject outParams = classInstance.InvokeMethod( "StartService", null, null);object o = outParams["ReturnValue"];int n = (int)o; // ここで例外発生
※最後の2行以外は、サンプルコードそのままです。
ちなみに、最後の行を以下の2行に置き換えてみました。
Console.WriteLine(o.GetType().ToString());Console.WriteLine(o.ToString());
すると、
System.Int32
10
が表示されますので、キャストできると思うのですが、キャストすることができません。
何か、大きな勘違いをしてるのかな?