14

.NET 4.0 .dll を GAC に追加しようとしています。サードパーティの会社によって 32 ビットと 64 ビットの両方の .dll として公開されているため、これを実行しようとしています。これは、異なるプラットフォームの異なるアプリから両方の形式で使用する必要があります。

とにかく、Windows Server 2008 環境でこの dll を GAC に登録するのに問題があります。

ローカル マシンの「C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools」にある gacutil.exe (およびサポート ファイル) を「C:\Windows」にコピーしようとしました。 \Microsoft.NET\Framework\v4.0.30319" フォルダーを、ここにある提案に従って、ターゲットの運用サーバーに配置します。

次に、それらを「C:\Windows\Microsoft.NET\Framework64\v4.0.30319」にコピーしてみました。

両方の場所から実行すると、インストールが成功したことが示されました。実際、登録は成功したように見えます。

  • C:\Windows\Microsoft.NET\assembly\GAC_64\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll
  • C:\Windows\Microsoft.NET\assembly\GAC_32\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll

ただし、(64 ビット) バージョンの dll を参照するコンソール アプリを実行すると、次のメッセージが表示されてエラーが発生します。

System.IO.FileNotFoundException: ファイルまたはアセンブリ 'ChilkatDotNet4.dll' またはその依存関係の 1 つを読み込めませんでした。指定されたモジュールが見つかりませんでした。ファイル名:「ChilkatDotNet4.dll」

そのため、mkdir を使用して次の GAC エントリを手動で作成し、コマンド プロンプトからコピーしました (実際には機能する場合と機能しない場合があります。gacutil.exe の何が特別なのかわかりません)。

  • C:\Windows\Microsoft.NET\assembly\GAC_MSIL\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll (64 ビット版の dll を使用)
  • C:\Windows\assembly\GAC_64\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll
  • C:\Windows\assembly\GAC_32\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll

dllを「インストール」するたびに、テストして同じエラーを受け取りました。どんなアイデアでも大歓迎です!


EDIT : 上記の GAC の問題は、実際には原因ではない可能性があります。まったく新しいコンソール アプリ プロジェクトを作成し、.dll を直接追加して (それがビンに存在するように) しても、サーバー上で実行できません。また、コンソール アプリは、.NET Framework 4 ではなく .NET 4.0 クライアント プロファイルを対象として作成されていることにも注意しました。クライアント プロファイルを対象として実行しようとすると、System.Web* ライブラリが利用できないように見えます. ただし、両方を対象とする非常に単純なテストアプリを実行しようとしましたが、どちらもサーバー上で実行されず、悪い.dllを参照しています。

.NET 4.0 コンソール アプリを実行するために発生する特別な種類のインストールはありますか?

4

1 に答える 1

34

将来これで問題が発生する可能性がある他の人のために。これは、dll を GAC に登録する方法や、自分のプロジェクトから参照する方法に関する一般的な問題ではありませんでした。

ChilkatDotNet4.dll (および私が確信している他のバージョン) は、Visual C++ でビルドされました。そのため、展開先のサーバーには、適切なプロセッサ アーキテクチャ用の Visual C++ ランタイムがインストールされている必要があります。

2010 (.NET 4.0) の場合:

64 ビット プラットフォームで x86 アプリを実行している場合。アプリケーション プールを "32 ビット アプリケーションを有効にする" = true に設定してください。

于 2010-06-30T14:58:50.840 に答える