0

それは「言語」よりも「アーキテクチャ」の問題です。

私の .Net ソリューションには、アプリケーションと共にデプロイされたディレクトリから画像を使用して何かを生成するクラス ライブラリがあります。ユーザーは新しい画像を簡単に追加できる必要があるため、それらをリソースに配置できません。

このディレクトリは、このクラス ライブラリに関連付けられています。そのパスを取得する方法はありますか? デバッグ用の AppDomain.CurrentDomain.BaseDirectory は /bin/debug/ を返しますが、これはもちろん正しくありません。

つまり、私のアプリケーションは C:\Program Files\MyApp にインストールされます。したがって、パスは「C:\Program Files\MyApp\ImagesLib」である必要があります。

しかし:

私のアプリケーションは Subversion からダウンロードされ、d:\my projects\MyApp に保存されます。したがって、パスは「d:\My Projects\MyApp\ImagesLib」である必要があります。

このパスをユニバーサルにする方法は? ディレクトリはVisual Studioから作成されます(右クリック/追加/新しいフォルダー)

4

1 に答える 1

2

あなたのアーキテクチャは再考する必要があると思います。

新しいUACの世界では、ユーザーごとまたはコンピューターごとに特定の場所に書き込むことが期待されています。たとえば、にインストールする場合Program Files、UACでインストールフォルダに書き込もうとすると失敗する可能性があります(権限によって異なります)。

このため、列挙Environment.GetSpecialFolder()型と組み合わせて使用​​する必要があります。SpecialFolder

これらについて詳しくは、こちらをご覧ください。

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

たとえば、コンピュータごとに保存するだけだとすると、次のようになります。

var base_data_folder = Environment.GetSpecialFolder(SpecialFolder.CommonApplicationData);
var data_folder = Path.Combine(base_data_folder,"MyApplication");
var images_folder = Path.Combine(data_folder,"Images");

私のWindows7マシンでは、これは次のようになります。

C:\ProgramData\MyApplication\Images
于 2012-07-21T21:15:00.800 に答える