ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2013年5月24日金曜日

VisualStdio 2010で英語版のインストーラを作成

VisualStdio 2010で英語版のインストーラを作成しようとしたら

警告: カルチャ 'en-US' を項目 'Visual C++ 2010 ランタイム ライブラリ (x86)' に対して一致できませんでした。カルチャ 'ja' を使用します。

と表示される問題の解決方法がわかったのでメモ。

Bootstrapに英語の設定が足りないからが原因。
よって、必要な設定ファイルを用意すれば解決する。

インストーラプロジェクトのプロパティで「必須コンポーネント」がある。
この中でチェックを入れたモノが同時にインストールされるのだが、モノによっては英語対応していない。

先の例だと
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86
フォルダにjaフォルダはあるが、enフォルダがない。
そのために警告が出ている。

手っ取り早いのは英語版のVS2010をインストールし、上記enフォルダだけコピーしてあげることだ。



2012年1月20日金曜日

XmlSerializerでGenericなリストを使いたい!

XmlSerializerを使って、シリアライズなどするとき、GenericのList等は使えません。
ただ、配列は使用可能なので、次のようなコードで対応します。
 [XmlIgnore]
 public List myHogeList { set; get; }
 [XmlElement("myHogeList")]
 public Hoge[] myHogeArray
 {
  set
  {
   myHogeList = new List();
   myHogeList.AddRange(value);
  }
  get
  {
   return myHogeList.ToArray();
  }
 }

考え方は、XmlIgnoreを使ってシリアライズ対象外に、配列を使って無理矢理Listと相互変換。

2012年1月9日月曜日

WPFのモーダルダイアログの表示位置が上手く設定出来ない場合

ウィンドウのプロパティに「WindowStartupLocation="CenterOwner"」を設定し、「window.ShowDialog();」
としても、思う位置にウィンドウが表示されない。

なんかよくわからないが、window.Owner を設定しないのが原因らしい。
window.Owner = this;
window.ShowDialog();
とすると上手くいくようだ。
ただ、ユーザコントロール上だと
window.Owner = this; 
はできないので、
window.Owner = Window.GetWindow(this);
とするとよい。

2011年12月13日火曜日

XmlSerializerで「XXのタイプ初期化子が例外をスローしました。」

XmlSerializerを使って、クラスの読み書きを行おうとした時、「XXのタイプ初期化子が例外をスローしました。」と出て上手く行かなかった。

原因は対象となるクラスがprivateだったからだった。
publicに指定したら上手くいきました。