2010-12-20 18 views
0

私はプロジェクトを右クリックしてフォルダを追加することで追加した1つのフォルダを持つアプリケーションを持っています。このフォルダの中には、アクションをビルドするために設定されたxmlファイルがあります。コンテンツ、出力ディレクトリにコピー:新しい場合はコピーします(埋め込みリソースを設定しようとしました)だけでなく、これにはいくつかのテキストファイルがあります。C#アプリケーションの問題を展開する

私のbin/debug出力ディレクトリには、exe、xmlのフォルダ、スタンドアロンの.txtファイルなどがあります。私の問題は、もし私がexeを友達に送ってみると、彼はいつも例外がスローされてしまうのです。

exeをデスクトップに置くと、私のプログラムはある時点でフォルダ内のxmlファイルのファイル名を読み込みます。これを行うには、次のコードを使用していますので、

String[] filePaths = Directory.GetFiles(@"DataSources\"); 

私はexeファイルをデスクトップから実行するとき、このため、それは.xmlファイルのフォルダが同じ場所にあることを期待していると仮定? .txtファイルを読み込もうとするときと同じタイプの例外があります。私はここで間違って何をしていますか? http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspxまたはhttp://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx:あなたの時間

+0

私は、インストールキットを作ってそれを行い、必要なファイルをexeファイルを持つ出力ディレクトリにコピーしました。私はこれがもっと専門的だと思いますか? – tom

答えて

1

相対パスを使用してファイルから読み込む場合は、アプリケーションの現在のディレクトリからの相対パスを取得します。 tip: C#では、どのディレクトリがEnvironment.CurrentDirectoryを使用しているかを確認できます。

デスクトップにショートカットを作成する場合は、ショートカットを右クリックして、「開始」フォルダをアプリケーションのディレクトリに設定する必要があります。そうすることで、現在のディレクトリは、開始パスと相対パスがショートカットのパスではなく、そのパスを基準にして設定されるときに設定されます。

exeファイルを実際にデスクトップに移動した場合は、必要なリソースを移動する必要があるため、「datasources」という名前のフォルダが必要な場合は、そのフォルダも移動するか、現在のディレクトリを設定する必要がありますあなたがアプリケーションを起動するとき。

1

ため

おかげで、あなたのような何かをしようとしたことがありますか?

したがって Directory.GetFiles(environment.currentdirectory + @ "\ DataSources \");

+0

は、それがStreamReaderに達したときに同じエラーを発生しませんsr = new StreamReader( "txtfile.txt"); – tom

+0

例外はスローされますか? –

関連する問題