c# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误
Posted
技术标签:
【中文标题】c# winforms GetCurrentDirectory 返回 C:\\WINDOWS\\System32\\ 设计错误【英文标题】:c# winforms GetCurrentDirectory returns C:\WINDOWS\System32\ design errorc# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误 【发布时间】:2018-03-29 04:54:08 【问题描述】:我正在制作一个带有 winforms 项目的收银员应用程序,我需要使用访问数据库,我使用了 System.IO.GetCurrentDirectory()
。但它在设计时返回C:\WINDOWS\System32
,所以当我使用设计器时它会不断弹出消息框。
当我运行它时它也会返回正确的目录。
这是我的连接字符串的示例:
OleDbConnection conn = new OleDbConnection();
string dataPath = System.IO.Directory.GetCurrentDirectory();
conn.ConnectionString = @"
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=" + dataPath + "/Data/Databases/database.accdb;Persist Security Info=False";
如有任何帮助,将不胜感激。
编辑:
当我尝试打开设计器时会发生什么: https://i.stack.imgur.com/HQjHa.png
【问题讨论】:
到底是什么问题? 它在设计时返回 C:\WINDOWS\System32,所以消息框不断弹出 启动设计器时怎么会出现错误???你为什么不从项目中排除数据库并将其保存在应用程序文件夹中....应该修复它:) 【参考方案1】:不知道为什么会这样,但你可以试试:
System.Environment.CurrentDirectory
//or
Application.StartupPath
//or
System.IO.Path.GetDirectoryName(Application.ExecutablePath);
//or
System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
//or
System.AppDomain.CurrentDomain.BaseDirectory
【讨论】:
哪一个最好更可靠? 都返回相同的结果,看看哪一个有效 以上这些都不起作用:(它现在给了我visual studio的程序文件路径 在 Visual Studio 外运行并告诉我结果 如果我运行它就可以工作,但是如果我打开设计器,会从我的异常处理中弹出一堆消息框,它说数据库的路径错误并且消息框一直弹出所以我什么都做不了以上是关于c# winforms GetCurrentDirectory 返回 C:\WINDOWS\System32\ 设计错误的主要内容,如果未能解决你的问题,请参考以下文章