2009-08-24 6 views
6

プロパティEnvironment.CurrentDirectoryは、常にアプリケーションディレクトリの代わりにシステムディレクトリのパスを返します。私の同僚のPCでは、アプリケーションディレクトリを返します。C#.NETのEnvironment.CurrentDirectory

何が問題ですか?どうすれば解決できますか?

次のコードは、次のコードは、私

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", Environment.CurrentDirectory)); 

Environment.CurrentDirectory - Returns c:\windows\system32. 

のために働いていません。この.dllファイルは、VB 6で使用することができ、ASP.NETアプリケーション

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", AppDomain.CurrentDomain.BaseDirectory)); 

AppDomain.CurrentDomain.BaseDirectory - Returns the directory E:\MyApplications\. 

私のために働いている

+0

さらに詳しい情報を追加してください。コードスニペットで、あなたがしようとしていることを説明すると、回答が得られます。 – Gishu

+0

Windowsフォームアプリケーションですか? – Jehof

+0

これはクラスライブラリです。しかし、VB 6やASP.NETアプリケーションで使用することができます – gopal

答えて

1

これは、アプリケーションが実行中の現在のユーザーIDと関係があると思われます。たとえば、ユーザーセッションでアプリケーションを実行している場合(たとえばVSでデバッグ)、次にあなたの現在のディレクトリを返すかもしれませんが、もしあなたがIISでそれを実行していたなら、これはなぜシステムフォルダにデフォルト設定されているのでしょうか?

3

Environment.CurrentDirectoryの値は、ファイルルックアップのベースとして使用するべきではありません。変更する可能性があり、常にあなたのコントロール下にあるとは限りません。例えばあるファイルを別のフォルダに保存すると、「現在のフォルダ」の値が変更されることがあります。ご覧のように、予測できない結果をもたらす可能性があります。

より適切に調整できる値を使用してください。例えばあなたのアプリケーションのインストール時に更新される設定ファイル(xml?)のResourcesFolderPath値。

10

設定されている現在のディレクトリ

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //or set executing Assembly location path in param 

Environment.CurrentDirectory //now returns your app path 
5

使用

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly()があります。);