【问题标题】:|DataDirectory| in Project properties > Settings|数据目录|在项目属性 > 设置
【发布时间】:2015-01-02 12:22:42
【问题描述】:

连接字符串设置如下:

名称: dbPersonConnectionString

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

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

当我安装和运行应用程序时,它会在 C:\MyApp\Data\ 文件夹中查找 DB。它应该是 C:\MyApp,没有额外的 \Data 文件夹。

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

编辑:

        string executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
        string path = (System.IO.Path.GetDirectoryName(executable));
        AppDomain.CurrentDomain.SetData("DataDirectory",path);

【问题讨论】:

  • 您是否部署为 ClickOnce?
  • 是的,这是一个 ClickOnce 项目。
  • 这解释了更改的默认值。也许只是顺其自然。

标签: c#


【解决方案1】:

以前有人问过这个问题。这个MSDN post 给出了一个很好的概述。

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

【讨论】:

【解决方案2】:
AppDomain.CurrentDomain.SetData("DataDirectory", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));

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

【讨论】:

  • 这段代码应该放在我的 winform 应用程序的什么位置?
【解决方案3】:

这个解决了我的问题

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

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多