Update 3がインストールされたVisual Studio 2012を使用しています。私はC#のターゲット.NETフレームワーク4.5を使用しています。System.IO.File.Exists()x86およびx64アプリケーションと異なる回答
私はこのように起動する方法があります:パスは確かに私のマシン上に存在しない
"C:\\Users\\Jonathan.DeCarlo\\Source\\Repos\\PoliticalClassifier\\src\\PoliticalClassifier.DataSource.Tests\\TestFiles\\Social_Economic_DataMicro.xlsx"
:
public void Open(System.String filePath)
{
if (!System.IO.File.Exists(filePath))
throw new FileNotFoundException(. . .);
. . .
}
をfilePath
パラメータの値は、このです。このアプリケーションは「Any CPU」としてコンパイルされています。 Windows 7 x64がインストールされたマシンで実行しています。アプリケーションをx64プロセスとして実行させると、ファイルが存在してもFileNotFoundException
がスローされます。アプリケーションを強制的にx86プロセスとして実行すると、例外はスローされません(この場合は例外です)。
System.IO.File.Exists(filePath)
は、アプリケーションがx86プロセスではなくx64プロセスとして実行されているときに、別の結果を返すのはなぜですか?
filePath文字列がx86とx64の両方で同じであることを確認できますか? filePathは環境変数で設定されていますか? – ClosedEyesSeeing
同じ 'filePath'で単に' File.Exists'を呼び出す新しいコンソールアプリケーションで問題を再現できますか? – keyboardP
@ClosedEyesSeeing - 私はfilePathが両方で同じであることを確認しました。また、パスを把握するための環境変数はありません。テスト目的のためにハードコードされたパスに変更しました。 –