13

さて、FileSystemWatcherいくつかの Visual FoxPro データベース ファイルの出力フォルダーを監視する Windows サービスを取得しました。そして、VFPOLEDB.1プロバイダーを利用してそれらのファイルを読み取ります。このプロバイダーは本番環境で使用されているため、このプロバイダーから離れることはできません。

ただし、これまでこのアプリケーションをサポートする必要がなかったため、私の開発ボックスはこのアプリケーション用にセットアップされていません。ここに私の環境があります:

  • ウィンドウズ 7 x64
  • ビジュアル スタジオ 2005
  • .NET 2.0 Windows サービス

そのため、最初にエラーが発生し始めたとき、プロバイダーがまったくないだけだと思ったのですが、それは正しかったのです。というわけで、ここからダウンロードしてインストールしました。

その後、ファイルをフォルダーに再度ドロップしましたが、同じエラーが発生しました。

おそらく にドロップされたため、登録で問題が発生している可能性があるx64マシンであるSysWOW64ため、予想どおりだったので、次のコマンドを実行しました。

regsvr32 "C:\Windows\SysWOW64\mscomct2.ocx"

そして、それは正常に登録されたと言いました(つまり、LOLについては何も意味しません)が、ファイルを再度ドロップしました-同じエラーです。

私はまだ自分のマシンを再起動していません.誰かが問題であるやむを得ない理由がある場合は再起動できますが、一般的に言えば、アセンブリが適切に登録されている場合、regsvr32それは必要ありません. 私は大量の COM オブジェクトを扱ってきましたが、オブジェクトを登録している限り、オブジェクトを取得するために再起動する必要はありません。

このことを登録するために実行する必要がある別の手順を知っている人はいますか?

4

4 に答える 4

33

必要に応じて登録されます。AnyCPU プラットフォーム用にコンパイルされたアプリケーションです。
x64 オペレーティング システムでは、これにより 64 ビット コードが生成され、64 ビット コードは 32 ビット ドライバーにアクセスできませんでした。

プラットフォームを x86 に変更すれば問題ありません。

編集
2年後、この回答に追加するものがあります。Visual Studio 2013 ではチーズが移動しました。リンクされた記事では、コンパイラのセットアップのデフォルトがどのように変更されたかを詳細に説明しています。AnyCPUターゲット CPU とは、アプリケーションが x64 ビット オペレーティング システムでも 32 ビット アプリとして動作することを意味し、Prefer 32 bit特に必要がない限り、実質的に x64 アプリケーションの余地はありません。

この新しい構成では、Mark Berry によって以下のコメントに投稿された内容を覚えておくことも重要になります。(現在 32 ビット) アプリが IIS 64 ビット環境で動作する必要がある場合は、Application Poolwithを設定する必要があります。Enable 32 bit Applications

于 2013-03-28T14:41:58.733 に答える