5

私のコードが実行されているのと同じディレクトリに、いくつかのファイルが配置されていることを知っています。それらを見つけて別の方法に渡す必要があります:

MyLib.dll
Target1.dll
Target2.dll

Foo(new[] { "..\\..\\Target1.dll", "..\\..\\Target2.dll" });

だから私はSystem.IO.Directory.GetFiles(path, "*.dll")。しかし今、私は道を知る必要があります:

string path = new FileInfo((Assembly.GetExecutingAssembly().Location)).Directory.FullName)

しかし、もっと短い方法はありますか?

4

2 に答える 2

6

プロパティを試すことができEnvironment.CurrentDirectoryます。アプリケーションの種類(コンソール、WinForms、ASP.NET、Windowsサービスなど)とその実行方法によっては、動作が異なる場合があることに注意してください。

于 2010-07-17T11:46:19.167 に答える
2

Environment.CurrentDirectoryは、実行されたコードが配置されているディレクトリではなく、現在のディレクトリを返します。Directory.SetCurrentDirectoryを使用する場合、またはディレクトリが設定されているショートカットを使用してプログラムを起動する場合、これは探しているディレクトリではありません。

元のソリューションに固執します。プロパティを使用して実装を非表示にします(そして実装を短くします)。

private DirectoryInfo ExecutingFolder
{
    get
    {
        return new DirectoryInfo (
            System.IO.Path.GetDirectoryName (
                System.Reflection.Assembly.GetExecutingAssembly().Location));
    }
}
于 2016-01-04T10:33:58.517 に答える