2012-06-13 53 views
1

我已经创建了一个使用WPF的基本工具。如果我从它所在的目录中运行该工具,一切正常。但是,如果我从其他目录运行,则不会发生任何事情。从命令行,它只是返回到提示。我没有WinForms应用程序的这个问题,并且该目录确实包含了该工具所依赖的一个dll。还有什么可以继续?如何从不同目录运行WPF应用程序?

编辑:我想我找到了这个问题。它在MainWindow.xaml.cs构造函数中的InitializeComponent调用中死去。被绑定的属性正试图访问空对象。但是,我还没有弄清楚为什么只有当我从一个不同的目录运行该属性为空。考虑解决这个问题。

+0

您是否正在使用Environment.CurrentDirectory更改目录?或者在快捷方式中设置工作目录? – Slugart

+0

“从不同目录运行”是什么意思?你的应用程序是否做了某些需要特殊权限的事情,比如访问文件系统? – madd0

+0

我只是从命令行运行。假设该工具位于C:\ temp \ debug。但是,我在目录c:\ temp中并尝试运行“C:\ temp \ debug \ tool.exe”。我能够成功使用快捷方式,因为它包含一个工作目录。 – bsh152s

回答

3

回复:为什么属性为null

我怀疑的InitializeComponent试图加载一些资源,并期待在WorkingDirectory的资源文件。

试试这个:

var realWD = Environment.CurrentDirectory; 
Environment.CurrentDirectory = 
     System.IO.Path.GetDirectory(
      System.Reflection.Assembly.GetEntryAssembly().Location); 
InitializeComponent(); 
Environment.CurrentDirectory = realWD; 

编辑:只是重新格式化,以避免水平滚动。

-Jesse

+0

那实际上是怎么回事。不知道为什么当我试图反序列化一个不存在的文件时,异常没有被吹掉。 – bsh152s

+0

一些异常是由InitializeComponent在内部捕获的,或者是一些更深层的代码。 –

相关问题