【问题标题】:Weird .NET PATH Error奇怪的 .NET 路径错误
【发布时间】:2012-07-12 12:01:55
【问题描述】:

我正在尝试通过 PHP 运行以调试模式构建的 .NET 应用程序。

PHP 成功运行其他应用程序。

问题是当我通过 Windows 资源管理器运行此应用程序时(即通过在地址栏中键入“C:\app.exe 参数”),它工作得非常好。

但是,当我使用 PHP 或 CMD.exe(命令提示符)运行相同的程序时,应用程序会崩溃。 我查看了临时文件夹中生成的元数据文件,它有一个 FileNotFound IO 异常。

有什么线索吗?

看起来像一些臭名昭著的目录问题(工作路径等)

请帮忙, 谢谢。

【问题讨论】:

  • 你能发布一些代码吗?
  • 这是一个巨大的代码,所以我不认为这是一个好主意。
  • 你能给我们一些关于你做这件事的环境的线索吗?即操作系统版本、PHP版本等

标签: c# php .net path


【解决方案1】:

看起来像一些臭名昭著的目录问题

是的,这听起来像是一个应用程序错误 - 可能应用程序正在对当前工作目录做出假设,这并不总是正确的。可能是假设当前工作目录 (Environment.CurrentDirectory) 与应用程序的安装目录 (AppDomain.CurrentDomain.BaseDirectory) 相同。

从 Windows 资源管理器运行应用程序时,此假设可能成立,但在一般情况下不一定。

要访问与安装目录相关的文件夹中存储的文件,请将Environment.CurrentDirectory 替换为AppDomain.CurrentDomain.BaseDirectory。

【讨论】:

  • 您好,感谢您回来!!!我尝试将 AppDomain.Current... 替换为 Environment.CurrentDirectory,但没有成功。
  • @Carlos,FileNotFoundException 有一个属性 FileName,它通常包含未找到的文件的名称。一旦你看到这个,一分钱可能会掉!请注意,您可能还有使用相对路径打开文件的代码 - 这将是相对于当前工作目录的,并且可能还需要更改为相对于应用程序安装目录的完整路径:Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath)。跨度>
  • 您好,我将代码设置为不打开任何文件,但问题仍然存在。后来,我看到你说的文件名是一个dll文件。现在,这更奇怪了——不仅 dll 文件与应用程序存在于同一目录中,而且它们的文件夹也包含在系统的 PATH 变量中。不过谢谢你的回答。 [配置:Windows 7 家庭高级版,PHP 5+ -> XAMPP]
  • @Carlos,如果您需要更多帮助,您应该发布完整的异常详细信息。也许它无法加载 .NET 程序集。请注意,系统 PATH 环境变量不会搜索 .NET 程序集。
  • 问题已解决:我通过一个简单的 try-catch 块发现 File Not Found 正在发生,因为当前目录与 cmd.exe 的目录相同,即 C:\Users\MyUserName 到 PHP 脚本,我只需添加 cd\,现在我的工作目录与应用程序 (exe) 所在的位置相同。有用! :) 感谢所有的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2011-01-28
  • 1970-01-01
相关资源
最近更新 更多