C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VisualStudioのビルドオプションで画像リソースを切


(過去ログ 48 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■26269 / inTopicNo.1)  VisualStudioのビルドオプションで画像リソースを切
  
□投稿者/ NSAKAI (1回)-(2008/10/06(Mon) 11:52:18)

分類:[C#] 

初めて質問させて頂きます。
現在VisualStudio2005上でC#によって開発をしているのですが、1つのプロジェクト内において、Debug/Releaseなどのビルドオプションに応じてビルドされたプログラムの表示を変更しようと思っています。
C#のソースに関しては"#if HOGE"のようにして切り替えを行えるのですが、リソースに含まれている画像を同様に切り替えることは出来ないのでしょうか。
Resource.resxに利用する画像などの定義が書いてあるようなのですが、XMLファイルには当然C#プリプロセッサディレクティブは使えないでしょうし……。
引用返信 編集キー/
■26274 / inTopicNo.2)  Re[1]: VisualStudioのビルドオプションで画像リソースを切
□投稿者/ やじゅ (680回)-(2008/10/06(Mon) 12:35:33)
やじゅ さんの Web サイト
No26269 (NSAKAI さん) に返信
> 現在VisualStudio2005上でC#によって開発をしているのですが、1つのプロジェクト内において、
> Debug/Releaseなどのビルドオプションに応じてビルドされたプログラムの表示を変更しようと思っています。
> C#のソースに関しては"#if HOGE"のようにして切り替えを行えるのですが、
> リソースに含まれている画像を同様に切り替えることは出来ないのでしょうか。
> Resource.resxに利用する画像などの定義が書いてあるようなのですが、
> XMLファイルには当然C#プリプロセッサディレクティブは使えないでしょうし……。

もしかしたら、MSBuildの条件分岐 ― Condition属性を使えばできるかもしれない……
http://www.atmarkit.co.jp/fdotnet/special/msbuild02/msbuild02_02.html
引用返信 編集キー/
■26278 / inTopicNo.3)  Re[1]: VisualStudioのビルドオプションで画像リソースを切
□投稿者/ たくボン (45回)-(2008/10/06(Mon) 13:55:25)
No26269 (NSAKAI さん) に返信
> 初めて質問させて頂きます。
> C#のソースに関しては"#if HOGE"のようにして切り替えを行えるのですが、リソースに含まれている画像を同様に切り替えることは出来ないのでしょうか。

#ifのプリプロセッサディレクティブでSystem.ResoucesのResourceManagerを使ったらどうでしょうか?
いつも使ってるクラスですが、全部掲載すると長いので、画像リソースを取得する部分のみを抜粋します。

private ResourceManager _resourceManager;
private Type _resourceSource;

// ResourceManagerの構築
public void RefreshResourceManager(string baseName, Type resourceSource)
{
  _baseName = baseName;
  _resourceSource = resourceSource;
  _resourceManager = new ResourceManager(GetStringResourcePath(), _resourceSource.Assembly);
}

// 画像リソースを取得
public Bitmap LoadBitmap(string name)
{
  string resName = string.Format("{0}.{1}", GetImageResourcePath(), name);
  Stream stm = _resourceSource.Assembly.GetManifestResourceStream(resName);
  return new Bitmap(stm);
}


引用返信 編集キー/
■26279 / inTopicNo.4)  Re[2]: VisualStudioのビルドオプションで画像リソースを切
□投稿者/ 774RR (224回)-(2008/10/06(Mon) 14:41:47)
俺なら、管理がめんどくさくならないようにするかな。
・リソースファイル中には両方の画像を登録しておく(当然 ResourceID も別)
・ソースコード中でロードする ResourceID を使い分ける
だろうな。

実際に Release する際にはファイル中に Debug 専用画像が残ったままになるけど無視無視
引用返信 編集キー/
■26284 / inTopicNo.5)  Re[3]: VisualStudioのビルドオプションで画像リソースを切
□投稿者/ たくボン (46回)-(2008/10/06(Mon) 15:40:55)
No26279 (774RR さん) に返信
> 俺なら、管理がめんどくさくならないようにするかな。
> ・リソースファイル中には両方の画像を登録しておく(当然 ResourceID も別)
> ・ソースコード中でロードする ResourceID を使い分ける

実装は人それぞれですが、そもそもリソースってなんでしょね?

コードとは分離して管理するべきものがリソースじゃないでしょうか?
再コンパイルの必要なく表現を変更できるからリソースの概念ができたんじゃないかな。
(そもそもResourceIDを別にするならリソースにする意味も無いですし、iniやレジストリ、.configとかに書いてコードで読み込めばいいだけ。)

そんなに管理って大変ですか?一昔前のC++ならともかく.NETですからねぇ。
引用返信 編集キー/
■26319 / inTopicNo.6)  Re[4]: VisualStudioのビルドオプションで画像リソースを切
□投稿者/ NSAKAI (2回)-(2008/10/06(Mon) 23:53:36)
なるほど、皆さんご回答ありがとうございます。

リソースをDLLなりで分離してしまう、というのも一つの手ではありますね。
実は自分の作っているプログラムをOEM的にリソースを差し替えて利用したいということで、デバッグや機能追加の都合上コードベースは一つのまま、表示系を切り替えてビルドしたいということでした。これが3つ4つの供給先でしたら迷わず分離するのですが、今のところ2つだけなので横着してビルドオプションで切り替えたいな、と思った次第です。
 取りあえずNo26278で挙げて下さっているSystem.ResoucesのResourceManagerで実装して、今後分離を考えたいと思います。ありがとうございました。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -