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 回答