C# |项目属性中的数据目录>;设置

C# |项目属性中的数据目录>;设置,c#,C#,连接字符串设置如下所示: 姓名: dbPersonConnectionString 类型: 连接字符串 范围: 应用 价值: 数据源=|数据目录|\dbPerson.sdf 当我安装并运行应用程序时,它会在C:\MyApp\Data\文件夹中查找DB。它应该是C:\MyApp,不带其他\数据文件夹 我应该简单地在项目中创建数据文件夹并将DB文件移动到该文件夹下,还是简单地调整| DataDirectory |-以及如何调整- 编辑: 这是以前提出过的问题。这提供了一个很好的概述 它确实应该默认为

连接字符串设置如下所示:

姓名: dbPersonConnectionString

类型: 连接字符串 范围: 应用

价值: 数据源=|数据目录|\dbPerson.sdf

当我安装并运行应用程序时,它会在C:\MyApp\Data\文件夹中查找DB。它应该是C:\MyApp,不带其他\数据文件夹

我应该简单地在项目中创建数据文件夹并将DB文件移动到该文件夹下,还是简单地调整| DataDirectory |-以及如何调整-

编辑:


这是以前提出过的问题。这提供了一个很好的概述


它确实应该默认为二进制文件文件夹,您可以使用
AppDomain.SetData()
更改它。如果你改变它,最好早点做。

这一个解决了我的问题

AppDomain.CurrentDomain.SetData("DataDirectory", Directory.GetCurrentDirectory());

这应该总是有效的,因为Directory.GetCurrentDirectory()可能会返回可执行目录以外的其他目录

是否作为ClickOnce部署?是的,这是一个ClickOnce项目。这解释了更改的默认值。也许只是顺其自然。答案是:这段代码应该放在我的winform应用程序中的什么位置?
AppDomain.CurrentDomain.SetData("DataDirectory", Directory.GetCurrentDirectory());
AppDomain.CurrentDomain.SetData("DataDirectory", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));