1

プログラムを 32 ビットから任意の CPU に変更しようとしています。プログラムは .NET 3.5 上の C# です。

Windows タスク スケジューラ COM ラッパーを使用しています。

アプリケーションはコンパイルされますが、64 ビット プラットフォームで実行しようとすると、次のエラーが発生します。

BadImageFormatException: ファイルまたはアセンブリ 'Interop.TaskScheduler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4b71cab8d8e4499f' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。

更新: TaskScheduler を参照として使用し、非常に単純な 2 行のコード (TaskSchedulerClass のインスタンスを作成し、コンソールに行を書き込む) を使用して、Any CPU で新しい C# プロジェクトを作成しました。同じ 64 ビット プラットフォームで実行したところ、機能しました。ただし、アプリケーション全体はまだ機能していません。ご協力ありがとうございました。

4

3 に答える 3

4

COM相互運用アセンブリであるため、おそらく32ビットのみです。プロジェクトを 32 ビットのままにしておく必要があります。

于 2012-08-01T14:13:54.773 に答える
0

WMIを使用して、標準の管理対象インターフェイスを介してタスクをスケジュールし、32ビットでの実行を制限するCOMコンポーネントの使用を回避できます。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394399(v=vs.85).aspx

于 2012-08-01T15:42:29.050 に答える
0

アセンブリは 32​​ ビットでしか動作しません。x64 バージョンまたは別のアセンブリを見つけてみてください。

于 2012-08-01T14:16:01.027 に答える