C# で Mono フレームワーク 2.10.2 を使用するアプリケーションがあり、正常に動作します。現在、Windows 64ビット用にビルドしようとしています。
すべてのプロジェクトとモノを 64 ビット用にコンパイルし、必要なバイナリとライブラリをリンクしてコピーしました。私のアプリケーションは、64 ビットの mono ファイルで正常にコンパイル、リンク、および起動できます。
しかし、ファイルを開くなどのファイル操作をしようとすると、アクセス拒否エラーが発生します。同じコードと同じファイルが 32 ビット バージョンで正常に動作します。または、メッセージ ボックスを開くなどのデバッグ関数を呼び出すと、その関数を呼び出さなかったように機能します。
Directory.GetWorkingDirectory 呼び出しで現在の作業ディレクトリを確認しました。ガベージ値を返します。これが、ファイルを見つけられない、またはアクセスできない理由だと思います。また、作業ディレクトリの値を E:\Develop のようなものに設定しようとしていますが、今回はパスが見つからないと表示されます。
Getworkingdirectory 関数はデフォルトで Microsoft の mscorlib.dll に実装されていますが、Mono フレームワークはカスタマイズされた mscorlib.dll を使用しているようです。この dll の 64 ビット バージョンを見つける必要がありますか、それとも他に何か不足していますか? ビジュアル スタジオ ソリューションを含む mono の msvc フォルダーを使用して mono を構築しています。