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

わんくま同盟

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

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

ツリー一括表示

バージョンの違うDLLを含む発行 /furu (17/10/04(Wed) 15:45) #85291
Re[1]: バージョンの違うDLLを含む発行 /Azulean (17/10/04(Wed) 21:50) #85294
  └ Re[2]: バージョンの違うDLLを含む発行 /furu (17/10/05(Thu) 10:55) #85297 解決済み
    └ Re[3]: バージョンの違うDLLを含む発行 /Jitta (17/10/05(Thu) 16:35) #85302 解決済み
      └ Re[4]: バージョンの違うDLLを含む発行 /Azulean (17/10/05(Thu) 22:28) #85306 解決済み


親記事 / ▼[ 85294 ]
■85291 / 親階層)  バージョンの違うDLLを含む発行
□投稿者/ furu (121回)-(2017/10/04(Wed) 15:45:27)

分類:[C#] 

VS 2015
Windowsフォームアプリケーション
使用している言語はC#2015

いつも大変お世話になっております。

PostgreSQLにアクセスするNpgsql.dll(バージョン3.1.8.0)を
参照設定し使用するプロジェクトを作成し、発行したのですが
このプログラムがエラーで実行できません。

エラーは
「…。(GAC)にアセンブリNpgsql1.0.0.0をインストール…」
です。

実は、別なソリューションで作成したクラスライブラリも参照設定していて
その中でNpgsql.dll(バージョン1.0.0.0)を参照設定しています。

どちらのDLLもGACには登録していません。

発行でなく、binフォルダを全コピーすると
exeは問題なく実行できているようです。

バージョンの違うDLLを含むプログラムは
どのようにすると発行できますか?

それとも、元々無理な話でしょうか?

よろしくお願いします。
[ □ Tree ] 返信 編集キー/

▲[ 85291 ] / ▼[ 85297 ]
■85294 / 1階層)  Re[1]: バージョンの違うDLLを含む発行
□投稿者/ Azulean (871回)-(2017/10/04(Wed) 21:50:30)
一番簡単な解決策は同じバージョンを参照するように修正することです。

基本的に同じフォルダーに異なるバージョンを配置できません。
(同じファイル名なので自明かと思いますが…)

しかしながら、発行の処理の段階で参照設定から必要アセンブリが確認されて、異なるバージョンを見つけたが故にエラーになるのでしょう。
(発行段階でエラーになるか、インストール後にエラーになるかは発行処理の仕組み次第なのでなんとも言えませんが)
[ 親 85291 / □ Tree ] 返信 編集キー/

▲[ 85294 ] / ▼[ 85302 ]
■85297 / 2階層)  Re[2]: バージョンの違うDLLを含む発行
□投稿者/ furu (122回)-(2017/10/05(Thu) 10:55:39)
No85294 (Azulean さん) に返信
回答ありがとうございます。

> 一番簡単な解決策は同じバージョンを参照するように修正することです。

ここが厳しいところです。

現状使用しているPostgreSQLにアクセスする社内共通ライブラリが
Npgsql.dll(バージョン1.0.0.0)を使用していて
新たにAmazon AWSを使いだしたのですが
Npgsql.dll(バージョン1.0.0.0)ではアクセスできず
Npgsql.dll(バージョン3.1.8.0)も使わざるを得なくなりました。

すべて、社内共通ライブラリをバージョン3.1.8.0に
置き換えればいいのですが、機能が異なっているところがあり
プログラム変更できていない状況です。

>
> 基本的に同じフォルダーに異なるバージョンを配置できません。
> (同じファイル名なので自明かと思いますが…)
そうですか。
バージョンを管理できるようになっているので
GACのように異なるバージョン配置の仕組みがあったらと思っていました。

> しかしながら、発行の処理の段階で参照設定から必要アセンブリが確認されて、異なるバージョンを見つけたが故にエラーになるのでしょう。
> (発行段階でエラーになるか、インストール後にエラーになるかは発行処理の仕組み次第なのでなんとも言えませんが)

発行の段階では、プロジェクトの参照設定には片方しか参照していないからかエラーになりません。
起動で参照していない方がエラー(見つからない)になります。

異なるバージョンを配置できないということがわかったので
解決済みとします。
解決済み
[ 親 85291 / □ Tree ] 返信 編集キー/

▲[ 85297 ] / ▼[ 85306 ]
■85302 / 3階層)  Re[3]: バージョンの違うDLLを含む発行
□投稿者/ Jitta (318回)-(2017/10/05(Thu) 16:35:23)
https://blogs.msdn.microsoft.com/abhinaba/2005/11/30/c-2-0-using-different-versions-of-the-same-dll-in-one-application/
C# 2.0: Using different versions of the same dll in one application

これは参考になりますか?
検索文字列「c# version dll search」
解決済み
[ 親 85291 / □ Tree ] 返信 編集キー/

▲[ 85302 ] / 返信無し
■85306 / 4階層)  Re[4]: バージョンの違うDLLを含む発行
□投稿者/ Azulean (873回)-(2017/10/05(Thu) 22:28:22)
No85297 (furu さん) に返信
> GACのように異なるバージョン配置の仕組みがあったらと思っていました。

基本的には異なるバージョンの配置は GAC でしょうね。
フォルダーを分けて、config ファイルでいろいろと書けばできなくはないかも…ですが、それなりに手間はかかるかと。

そうやっても、ローカルで実現したとしても、ClickOnce でうまくいくかはわかりません。

No85302 (Jitta さん) に返信
> https://blogs.msdn.microsoft.com/abhinaba/2005/11/30/c-2-0-using-different-versions-of-the-same-dll-in-one-application/
> C# 2.0: Using different versions of the same dll in one application

これも ClickOnce でうまくいくか不安がありますね…。
解決済み
[ 親 85291 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -