4

ASP.NET の専門家がこの質問に答えてくれることを願っています。私は Web サイトと Web サービスを含む単一の Web アプリケーションを持っています - どちらにもいくつかの共通のアセンブリ参照があります (データ アクセス レイヤー、ユーティリティなど) - ただし、Web サービスに加えられた最近の変更により、共通アセンブリの異なるバージョンが必要になります。 Web サイトが動作しないバージョン (ご参考までに、Web サイトは、新しいバージョンのアセンブリを使用すると爆発する古い 1.x .NET コードです)。

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

ありがとう!

(PS - 共通アセンブリを別の名前でコンパイルして参照し、それらを Web アプリのbinフォルダーに配置できる可能性があることに気づきましたが、それは本当に醜いように聞こえます...)

4

4 に答える 4

1

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

于 2009-05-28T18:57:28.963 に答える
1

web.config のランタイム部分を使用して、使用する dll を指定できます (以前に SQLLite で実行しました)。

 <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>
于 2009-05-28T19:00:00.767 に答える
1

Web サイトと Web サービスを含む単一の Web アプリケーションがあります。

それがあなたの主な問題です.2つの異なるライブラリコードベースに依存する部分的に機能するアプリケーションをリリースしました...

共通のアセンブリを複製して別の名前で再参照したとしても、骨が折れます (フレーズを許してください) re: そのアセンブリ内のすべてのクラスの名前空間。

最善の策は、Web アプリケーションから一時的に Web サービスを引き出し、Common Lib のバージョン管理の問題が解決されるまで、それらを 2 つの個別のアプリとしてホストすることです。

于 2009-05-28T19:00:08.647 に答える
0

新しいセットを別の名前のアセンブリにコンパイルしてもうまくいかないと思います.NETはまだ同じ名前空間を認識します.エラー、または最悪の場合、フレームワークは最初に呼び出されたアプリの部分 (website => 1.1、webservice => 2.0) に関連するものを読み込み、他のものを無視します。

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

過去数年間、クライアントの 1 人と一緒にこれを行ってきました。彼らは ASP.NET 1.1 で構築された巨大なサイトを持っていますが、彼らの最近のスタンドアロン プロジェクトは 2.0 に移行し始めています (内部では 3.5 ですが、明らかに、それはまだ 2.0 の下でホストされています) - 基本的に、共通コードを 3.5 に対して構築された新しいライブラリ セットに移植する必要があり、新しい言語機能を利用して、それらのセクションを新しい Web サイトに移動しました。 (IIS で) 完了したとき。

それは理想的ではありません。コードベースの 2 つのコピー (1.1 と 2.0) が残り、修正は通常 2 か所でロールアウトする必要がありますが、修正を開始する最良の方法のように思えました。

于 2009-05-28T20:02:17.350 に答える