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

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

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

バージョンの違うDLLを含む発行

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

■85291 / inTopicNo.1)  バージョンの違う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を含むプログラムは
どのようにすると発行できますか?

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

よろしくお願いします。
引用返信 編集キー/
■85294 / inTopicNo.2)  Re[1]: バージョンの違うDLLを含む発行
□投稿者/ Azulean (871回)-(2017/10/04(Wed) 21:50:30)
一番簡単な解決策は同じバージョンを参照するように修正することです。

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

しかしながら、発行の処理の段階で参照設定から必要アセンブリが確認されて、異なるバージョンを見つけたが故にエラーになるのでしょう。
(発行段階でエラーになるか、インストール後にエラーになるかは発行処理の仕組み次第なのでなんとも言えませんが)
引用返信 編集キー/
■85297 / inTopicNo.3)  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のように異なるバージョン配置の仕組みがあったらと思っていました。

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

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

異なるバージョンを配置できないということがわかったので
解決済みとします。
解決済み
引用返信 編集キー/
■85302 / inTopicNo.4)  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」
解決済み
引用返信 編集キー/
■85306 / inTopicNo.5)  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 でうまくいくか不安がありますね…。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ