我将Access数据库文件加入项目中,然后自动生成了相应的Dataset,TableAdapter,BindingSource这些东西。我发现一个问题,就是每次编译的时候编译器会自动把我的数据库文件拷贝到输出文件夹下,例如bin\Debug。如果我对数据库中的数据进行了修改,c#实际上修改的是\bin\Debug下的数据库。如果我下次重新编译了项目,bin\Debug下的数据库文件就会被项目中的数据库文件覆盖,我的修改也就没有了。app.config 中的connectionString 是这样写的
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TransTap.accdb;Persist Security Info=True"
我应该如何设置才能不让程序自动拷贝数据库,而是始终打开我加入到项目中的那个数据库文件?谢谢

解决方案 »

  1.   

    在vs中,右键access的属性,复制到输出目录选项选择选择不复制即可,默认是始终复制。
      

  2.   

    设置了,rebuild以后还是会拷贝。
      

  3.   

    设置了,rebuild以后还是会拷贝。
    你是什么项目?我刚也试过了,不拷贝的。
      

  4.   

    winform设置了,rebuild以后还是会拷贝。
    你是什么项目?我刚也试过了,不拷贝的。
    winform的项目
      

  5.   

    没问题的,右键vs项目中的access文件,弹出属性,点击属性,选择不复制即可。
      

  6.   

    难道是我添加数据库文件的方式不对?我是在工程上点右键选添加已有项。
    唉,我也按照你说的在工程上点右键选添加已有项,添加了access文件,然后按照我上面说的设置了一下,还是可以的,没有复制到bin/debug下面。
      

  7.   

    还有个办法,就是在项目-属性-生成事件中写一个批处理,copy xxx.accdb $(TargetDir)\xxx.accdb
      

  8.   

    难道是我添加数据库文件的方式不对?我是在工程上点右键选添加已有项。
    唉,我也按照你说的在工程上点右键选添加已有项,添加了access文件,然后按照我上面说的设置了一下,还是可以的,没有复制到bin/debug下面。
    我又添加一次可以了,真奇怪,不过我这次是把文件放在另一个工程里的。完整路径里面填的是绝对路径,发布的时候会有问题吗?
      

  9.   

    跟发布没关系,只是设置了不复制而已,这样就不会拷贝(或覆盖debug目录下原有的文件)到debug目录下。如果你想发布时把这个文件带走,就需要在项目的属性-生成事件中,编写命令行,将这个文件复制到debug目录下。
      

  10.   

    难道是我添加数据库文件的方式不对?我是在工程上点右键选添加已有项。在你改为“不复制”以后,你需要“清理”工程或者解决方案,或者干脆把 bin/Debug 目录删除了也行,然后再编译。