2

私がこの仕事に就く数年前、もうここにいない別の開発者が、HTML、vbscript、および javascript を使用して従来の ASP でアプリケーションを作成していました。これは問題ありませんが、問題は、HTML ファイルとコード ビハインド ファイルを使用して C# で 2 つのページが作成されたことです。これら 2 つのページのソリューション ファイルはありませんでした。それらはもともと Visual Studio で作成された可能性がありますが、現在は存在しません。

これは重要です。なぜなら、Visual Studio が何も考えずに実行してくれることがたくさんあるからです。

私の問題は、これらの 2 つの C# ページで、DLL を参照するようにする必要があることです。これは、Visual Studio を使用する場合の簡単なタスクです。プロジェクトへの参照を追加するだけで、人生はうまくいきます。しかし、VSの外では何も機能していないようです。

ページと同じフォルダーにdllを入れてみた後、次のことを試しました。

  • myDLL の使用;
  • myDLL dll = 新しい myDLL();
  • myDLL dll = myDLL();

内部静的クラスを作成して [DLLImport()] を使用するというコードをオンラインで見つけましたが、それも機能しませんでした。dll または dll のエントリ ポイントが見つかりませんでした。これがすべてを機能させる方法である場合に備えて、現在、エントリポイントを作成する方法を研究しています。

これらのページを vbscript で書き直さなければならないこと以外 (これを行う時間はありません) は途方に暮れています。

以前にこの問題に遭遇した人はいますか? web.Config に入れることができるものはありますか? それとも、これは単に不可能であり、私はうんざりしています.

ところで、これはすべて 2.0 .net フレームワークで実行されています。

4

3 に答える 3

3

コードで参照する DLL を Web サイトの bin フォルダーにドロップした場合は、web.config を開き、次のセクションを見つけますconfiguration -> system.web -> compilation -> assemblies

アセンブリの表示名をそのリストに追加する必要があります。これにより、コンパイラは、レイト バインド ビルド プロセス中にそのアセンブリを参照します。

これで、それらのページでその中にあるものを使用できるはずです。

アセンブリの表示名がわからない場合 (通常yourassembly, version=*.*.*.*, Culture=neutral, PublicKeyToken=null、カルチャに不変で厳密な名前のないアセンブリの場合)、ILSpyなどのツールで開くことができます(他にもありますが、私のお気に入りになっています)。 UI で選択すると、次のようになります。

アセンブリの表示名を表示する ILSpy

強調表示が不十分で申し訳ありません - あまりにも多くのコーヒーに続くぎくしゃくした手

usingそのアセンブリのすべてのコードが 1 つの名前空間にある場合は、その名前空間を追加することで、プロジェクト内のすべての .cs または .aspx コードに既定値を追加することもできconfiguration -> system.web -> pages -> namespacesます。これにより、ページでそのコードを簡単に使用できます。

于 2012-06-28T21:44:25.280 に答える
1

アプリ用の VS ソリューション/プロジェクトを作成しました。これをコンパイルして Web サーバーに公開しました。公開したときに、すべてのプロジェクト ファイルをコピーしました。

実行したところ、dll が見つからなかったためクラッシュしました。

Andras が上で述べた行を追加してみました。

次に、Web サーバーの IIS に入りました。Web サイトの下のフォルダー リストを展開しました。アプリを含むフォルダーを右クリックし、そのフォルダーをアプリケーションフォルダーにしました。

私がそれをした後、すべてがうまくいきました。そこで、C# アプリと Web.Config ファイルに追加したコードをすべて取り消すとどうなるか見てみようと思いました。それでもうまくいきました。フォルダーを IIS のアプリケーション フォルダーにし、C# アプリに Using ステートメントを追加するだけで、人生は再び素晴らしいものになりました。

すべてのコメントと提案に感謝します。Andras ILSpy へのリンクに感謝します。それはクールな小さなツールです。

気をつけて、ロバート

于 2012-06-29T20:47:36.557 に答える
0

Jon に同意します。これらのファイル用に新しいプロジェクトを作成してみてください。見つけたコードよりも良いコードを残すことは常に良いことです。何らかの理由で新しいプロジェクトが選択肢にない場合は、質問でそのことを示す必要があります。

于 2012-06-28T21:41:11.993 に答える