1

我正在 Visual Studio 2010 Professional 中开发 C# Windows Presentation Foundation (WPF) 应用程序。我有一段代码可以找到一个相对于可执行目录的目录。我还有一些其他代码可以在该目录中搜索以扩展名 .png 结尾的所有文件,并创建这些文件的完整文件路径列表,这些文件是数据绑定到 ListBox 的。

该程序在调试模式下执行时运行良好。问题是 Visual Studio 设计视图无法在 UserControl 中显示 ListBox。换句话说,它不能创建 UserControl 的实例,因为“调用的目标已抛出异常”。事实证明,设计视图获得的目录与可执行文件使用的目录不同。具体来说,Visual Studio 设计视图获取“C:\Documents and Settings\jdgoodw0\My Documents\Visual Studio 2010\Projects\ExampleDrawingTool”,运行时应用程序获取“C:\Documents and Settings\jdgoodw0\My Documents\Visual Studio 2010\项目\ExampleDrawingTool\ExampleDrawingTool\bin\Debug”。(我知道这一点是因为我输入了一些调试代码来将目录作为参数输出到异常。)

我用来获取应用程序/工作目录的代码是:

DirectoryInfo currentDirectory = new DirectoryInfo(Environment.CurrentDirectory);

我也尝试过这些但没有成功:

DirectoryInfo currentDirectory = new DirectoryInfo(System.AppDomain.CurrentDomain.BaseDirectory);
DirectoryInfo currentDirectory = new DirectoryInfo(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location));
DirectoryInfo currentDirectory = new DirectoryInfo(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
DirectoryInfo currentDirectory = new DirectoryInfo(System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName));

有没有办法我可以获得可执行文件的目录(完整路径)(即在 bin\Debug 文件夹中),这样可执行文件和 Visual Studio 设计视图都将获得相同的路径?

4

1 回答 1

1

You can use this code to get the current assemblies directory:

string appDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
于 2013-07-24T19:14:13.327 回答