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

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

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

Re[23]: 設定ごとにビルド内容を分けたい VS2005 [1]


(過去ログ 32 を表示中)

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

■15748 / inTopicNo.21)  Re[17]: 設定ごとにビルド内容を分けたい VS2005
  
□投稿者/ まどか (496回)-(2008/03/20(Thu) 00:09:07)
もう一回確認。

1.新規プロジェクトを作成。
2.参照の追加のCOMタブからMicrosoft Excel 12.0 Object Library(Office2007の場合)を選択。
3.ソリューションにプロジェクトを追加。(セットアッププロジェクトテンプレート)
4.アプリケーションフォルダを選択し右クリックでプロジェクト出力を選択後、↑のプロジェクトのプライマリ出力を選択。

これが一連の流れですが、セットアッププロジェクトの依存関係にExcel.exeは存在しません。
したがって、Excel.exeを直接的に参照するようなことをおこなったのではないかと考えられます。
引用返信 編集キー/
■15753 / inTopicNo.22)  Re[18]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (12回)-(2008/03/20(Thu) 11:29:21)
>まどか さま
> これが一連の流れですが、セットアッププロジェクトの依存関係にExcel.exeは存在しません。
> したがって、Excel.exeを直接的に参照するようなことをおこなったのではないかと考えられます。

今調べている最中なのですが、ひょっとしたら、エクセルのプロセスを調べるコードに
原因があるかもしれませんが、確認次第、結果を書こうと思います。

> はつねさま
>開発環境と実行環境が異なるような開発は行わない方がいい

とはいうものの、WEBアプリならいざ知らず、実行環境が不特定多数の場合は事実上不可能ではないですか?
エクセルのバージョン判定のカプセル化を検討したりしたのですが
調べるほどにPIAを厳密に調べて参照設定を使用するよりも、
参照設定をあきらめてCREATE OBJECTによる遅延バインディングしかないように思えてきました。
ホームページ調べている限りでは、参照設定をしない方法もよく見られますが、
あまり推奨されない方法なのでしょうか。


引用返信 編集キー/
■15757 / inTopicNo.23)  Re[19]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ 渋木宏明(ひどり) (678回)-(2008/03/20(Thu) 12:34:29)
渋木宏明(ひどり) さんの Web サイト
> とはいうものの、WEBアプリならいざ知らず、実行環境が不特定多数の場合は事実上不可能ではないですか?
> エクセルのバージョン判定のカプセル化を検討したりしたのですが
> 調べるほどにPIAを厳密に調べて参照設定を使用するよりも、
> 参照設定をあきらめてCREATE OBJECTによる遅延バインディングしかないように思えてきました。

Office のどんな機能を使うかにもよりますが、1つのアプリケーションで Office の複数のバージョンに対応しなければならない場合、遅延バインディングを使うのも1つの手ではあります。

ただし、遅延バインディングを使ったとしても、Office 95 やそれ以前まで遡って動作保証するのは相当骨が折れるはずです。

> ホームページ調べている限りでは、参照設定をしない方法もよく見られますが、
> あまり推奨されない方法なのでしょうか。

およそ、コンパイル時のエラー検出が期待できないですからね。


引用返信 編集キー/
■15759 / inTopicNo.24)  Re[19]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ はつね (525回)-(2008/03/20(Thu) 12:48:49)
No15753 (もんきっき さん) に返信
> とはいうものの、WEBアプリならいざ知らず、実行環境が不特定多数の場合は事実上不可能
> ではないですか?

不特定多数(この場合、不特定多バージョン)の実行環境で動かすというのは大変な事です。ちゃんと動作保障まで考えると不特定多数とはいえ対象バージョンをどうするかはシンプルに考えると次のようなチャートにもとづくと思います。

実行環境が不特定多バージョン⇒不特定多バージョンの確認環境を用意する(事実上不可能)

実行環境を特定の複数バージョン⇒複数バージョンの確認環境を用意する(コストに見合うか?)

実行環境を特定バージョンのみとする⇒一番ニーズがあるバージョンを調査して開発


タイプライブラリの非互換についてはExcelのタイプライブラリを使った開発であればVB6もVB2005も等しく直面する問題です。VB6での開発は行ってきたとの事ですが、そのときはどうしていたのですか。CreateObjectによる遅延バインディングでしょうか。

VB2005でもCreateObjectを使った方法は可能ですが参照設定して開発環境で動作確認(Excelのオブジェクト解放周りとか特に念入りに)してから参照設定はずしてCreateObjectの形に書き換えるとよいかも知れません。

でも、この場合でも最初のチャートのような検討は必要です。
つきつめれば、バージョン間の非互換部分を吸収するコードを記述するのも大切ですが、それ以上にターゲットバージョンでのテストというところが影響してくると思います。

引用返信 編集キー/
■15768 / inTopicNo.25)  Re[20]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (13回)-(2008/03/20(Thu) 15:00:24)
>渋木宏明(ひどり)さま
> ただし、遅延バインディングを使ったとしても、Office 95 やそれ以前まで遡って動作保証するのは相当骨が折れるはずです。
.netですのでスペック的にも2000以降で十分と考えています

> およそ、コンパイル時のエラー検出が期待できないですからね。
確かにデバッグの問題はつらいです

>はつね さま
>VB6での開発
VB6環境ではエクセル2000の環境として、参照設定をしていました。
ただしVBAから発生させた簡単なコードを中心に扱ってきたところ
厳密なバージョンチェックはなかったのか、今までバージョンの問題は発生しませんでした

>ターゲットバージョンでのテストというところが影響してくると思います
今参照設定をはずしてやってみたところ、問題なく動作しました
インストーラサイズも9MBから1.6MBまで小さくなりました
これから2003と2007に対応できるようにチェックをしていきます

vb.netでエクセルを扱う私のような独学素人プログラマーには本当に良い勉強になりました
お忙しいなか、たくさんのレスをいただきまして、本当にありがとうございました

引用返信 編集キー/
■15770 / inTopicNo.26)  Re[21]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ 渋木宏明(ひどり) (679回)-(2008/03/20(Thu) 16:27:01)
渋木宏明(ひどり) さんの Web サイト
>>ただし、遅延バインディングを使ったとしても、Office 95 やそれ以前まで遡って動作保証するのは相当骨が折れるはずです。
> .netですのでスペック的にも2000以降で十分と考えています

としても、特定のバージョンだけに対応するよりも確実に手間がかりますよ。

複数バージョンに対応するなら、厳密には、使用しているメソッドの各バージョンでの仕様の違いのある/なしや挙動の違いを調べ上げたうえで設計・実装するべきです。

特定のバージョン用にビルドしたアプリが他のバージョンの Office でも「動いたからいいや」てなもんは、品質保証とは呼べません。

> VB6環境ではエクセル2000の環境として、参照設定をしていました。
> ただしVBAから発生させた簡単なコードを中心に扱ってきたところ
> 厳密なバージョンチェックはなかったのか、今までバージョンの問題は発生しませんでした

Office 2000 用の PIA って存在するんでしたっけ?

Office 2003 あるいは Office 2007 用の PIA を参照設定して作成したアプリケーションが、Office 2000 を相手にしても動いている、という話ですか?

Microsoft は Office 2007 用の PIA と Office 2000 との組み合わせについて動作保証は行っていなかったはずです。もしこのセンで進めるなら、PIA が原因で何か問題があったとしても Microsoft からのサポートは受けられません。

また、もし Office 2000 の TLB を参照設定して相互運用アセンブリを生成して使用しているのだとしたら、それも Microsoft は推奨していません。

実際、一部の型やメソッドが正常に機能しないので、この方法を採用するくらいなら、遅延バインドしたほうがマシです。

引用返信 編集キー/
■15774 / inTopicNo.27)  Re[22]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ PATIO (45回)-(2008/03/21(Fri) 10:45:12)
ちょっと気になったのは、もんきっきさんの立場がどういう立場なのかですね。

どこまでの動作保障をするつもりがあるのか、また、求められているのかと言う点。

例えば、仕事でやる場合の動作保障と言うのはきわめて厳密な物になるので
実際には動作条件をきちんと絞り込むのが普通です。
その動作環境であれば保障します。ちがっていれば、動いていても保障はしませんと言う奴です。

趣味の範囲であれば、もっとゆるくなると思いますし、
フリー配るのであれば、動作確認した環境は云々です。
自己責任でお使いくださいでも通るはず。

これが、幾ばくかでもお金を戴くと言う話になると例え利潤が出てなくても
色々言われますし、求められますよね。

で、そもそも もんきっきさんは何処までをやるつもりでいるんでしょう?
また、何処までを求められているんでしょう?

技術的な要素への興味の話なら良いのですが、実際に配ると言う事になると
この辺の話も絡んでくるので一概には言えなくなると思いますよ。

基本的には、Officeとの連携をする場合はバージョンが変われば、
アプリ側の対応無しと言うのは無理と考えてよろしいかと。
提供側で互換性を保障してくれているならば話は別ですが、
してくれていないのであれば、できないと考えるべきでしょう。
動作保障に関してはアプリの開発の中でも面倒な問題の一つですからねぇ。

引用返信 編集キー/
■15815 / inTopicNo.28)  Re[23]: 設定ごとにビルド内容を分けたい VS2005
□投稿者/ もんきっき (14回)-(2008/03/23(Sun) 02:38:19)
No15774 (PATIO さん) に返信
> ちょっと気になったのは、もんきっきさんの立場がどういう立場なのかですね。
>
> どこまでの動作保障をするつもりがあるのか、また、求められているのかと言う点。

気楽な素人プログラマーなので動作保障は考えたことがありません
使ってみて使える環境の人が、自己責任で使ってもらう程度のものです
ただ、自分の作ったソフトがよりたくさんの人に使えたらいいな、と思います

プロのプログラマーの方のスタンスを少し感じることができて勉強になりました
みなさま、どうもありがとうございました
そろそろ閉めます


解決済み
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

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

管理者用

- Child Tree -