这行代码
Assembly.LoadFrom(".\MyAssembly.dll")
在一台计算机上抛出以下错误:
System.IO.FileNotFoundException:无法加载文件或程序集'file:/// \\ Server1 \ Data \ MyAssembly.dll'或其依赖项之一。系统找不到指定的文件。
MyAssembly.dll存在于应用程序的安装位置(不在Server1上),并且应用程序的所有其他实例都正确地找到程序集。我不是在打电话
Directory.SetCurrentDirectory
应用程序中的任何位置,应用程序不使用任何PATH或其他环境变量。
问题在应用程序抛出不同错误后启动:
System.Data.OleDb.OleDbException:表达式中未定义的函数'todate'。
基于以下连接字符串
提供商= Microsoft.ACE.OLEDB.12.0;数据源= \\ Server1 \ Data \ MyDataBase.accdb; Persist Security Info = False;
对OLEDB的调用是否设置了当前目录,然后将其保留为\\ Server1 \ Data,因为它失败了?
我应该在这台机器上寻找一些环境变量,可以设置我的应用程序的当前目录吗?
答案 0 :(得分:0)
尝试使用此变量获取当前路径
Environment.CurrentDirectory
和
Assembly.LoadFrom(Path.Combine(Environment.CurrentDirectory & "\MyAssembly.dll"))
答案 1 :(得分:0)
不要假设当前目录是常量。
用户可以使用不同的工作目录创建快捷方式,也可以在命令提示符下从任意目录启动应用程序。
此外,标准库的某些特定方法可以在运行时更改当前目录
(我知道OpenFileDialog
/ SaveFileDialog
(未设置RestoreDirectory
为真)这样做。)
OLEDB也可能会更改当前目录,但不关心 永远不要依赖当前目录。
要获取应用的目录,请改用System.Windows.Forms.Application.StartupPath
。