2009-05-28 13 views
4

うまくいけば、あなたはASP.NETのプロフェッショナルがこの質問に答えることができます。私はウェブサイトとWebサービスを含む単一のWebアプリケーションを持っています - どちらも共通の複数のアセンブリ参照(データアクセスレイヤー、ユーティリティーなど)を持っていますが、Webサービスに最近加えられた変更には異なるバージョンウェブサイトがうまく動作しない一般的なアセンブリのバージョン(疑問がある場合は、新しいバージョンのアセンブリを使用すると爆発する従来の1.x .NETコードです)ASP.NET:複数のアセンブリバージョン、同じWebアプリケーション

私のWebサービスが1つのバージョンを参照して、私のWebサイトで別のバージョンを参照できるようにする方法?私は明らかにbinフォルダ内に同じ名前のバージョンを1つだけ持つことができます。

ありがとうございます!

(PS - それはちょうど私はおそらくコンパイルし、別の名前で、共通のアセンブリを参照し、Webアプリケーションのビンフォルダにそれらを置くことができることを私に夜が明けた - しかし、それは本当に非常に醜い聞こえる...)

答えて

1

また、WebサービスをWebサイトから独立した新しいアプリケーションに分けることもできます。

+0

合意。彼らは本当に分離されるべきである1つの2つのアプリケーションのように聞こえる。 – RichardOD

1

あなたは(私たちは前にSQLLiteのためにそれを行っている)を使用するDLLを指定するには、web.configファイルの実行時の一部を使用することができます。

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <qualifyAssembly partialName="System.Data.SQLite" fullName="System.Data.SQLite, Version=1.0.60.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> 
    </assemblyBinding> 
    </runtime> 
+0

同じアセンブリの異なるバージョン(異なる機能を持つ)に依存するASMXとASPXがサイトにある場合、どのように問題を解決しますか? –

+0

私はそれが私の特定の問題を解決するとは思わないが、それは知っていいかもしれない - ありがとう! – Charles

1

私は、ウェブサイトを含む単一のWebアプリケーションを持っていますそこにあなたの主な問題は、次の2つの異なるライブラリーコードベースに依存している部分的に機能するアプリケーションをリリースしただし、Webサービス

...

共通のアセンブリを別の名前で複製して再参照したとしても、そのアセンブリ内のすべてのクラスの名前空間は残っています。

Webアプリケーションを一時的にWebサービスから引き出し、Common Libのバージョン管理の問題を整理できるようになるまで、2つの別個のアプリケーションとしてホストすることをお勧めします。

+0

ええと...私はIISで別のアプリケーションを作成するかもしれません。このサイトは、DNNのバージョン3を使用して、何年も前に行われました。私は新しいバージョンがなぜすべてのモジュールを失敗させるのかを調べるのに数時間を費やしましたが、運がない( "モジュールをロードできませんでした"の代わりにスタックトレースを表示するように見えません)。 – Charles

0

新しい名前をつけてassmeblyをコンパイルすると、別の名前でも動作しないと思います - .NETは同じ名前空間を参照しています - したがって、あくまで「あいまいな参照」や「型xはすでに宣言されていますdll yエラーが発生した場合、または最悪の場合、フレームワークは最初に呼び出されたアプリケーションの部分(Webサービス=> 1.1、Webサービス=> 2.0)に関連するものを読み込み、もう一方は無視します。

あなたの最善の策は、2つのWebサイトとWebサービスにアプリケーションをリファクタリングすることです。

私たちは、クライアントの1人と数年前にこれをやってきました。彼らはASP.NET 1.1上に構築された巨大なサイトを持っていますが、最近のスタンドアロンプ​​ロジェクトは2.0フードではありますが、明らかにまだ2.0の下でホストされています) - 基本的には、新しい言語機能を利用して、共通コードを新しい3.5のライブラリに移植しなければなりませんでした。完了したら新しいWebサイト(IIS)に移動します。

これは理想的ではありません。コードベース(1.1と2.0)の2つのコピーが残っています。一般に、修正は2か所で展開する必要がありますが、移動を開始するのが最善の方法でした。

関連する問題