如何部署c#M.S.access数据库应用程序

如何部署c#M.S.access数据库应用程序,c#,deployment,oledb,C#,Deployment,Oledb,我注意到以前有人问过这个问题,我已经阅读了这两个问题的答案,它们都不适用于我的问题,我知道最有可能的解决方案是更改我的代码,但是我不知道如何做到这一点,并且在调试时保持我的应用程序以相同的方式运行。 我正在使用这个连接字符串 public string cnString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + Path.GetFullPath(Application.Start

我注意到以前有人问过这个问题,我已经阅读了这两个问题的答案,它们都不适用于我的问题,我知道最有可能的解决方案是更改我的代码,但是我不知道如何做到这一点,并且在调试时保持我的应用程序以相同的方式运行。 我正在使用这个连接字符串

public string cnString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + Path.GetFullPath(Application.StartupPath + "\\..\\..\\data.mdb");

但我的问题是,数据库文件所在的文件夹与部署后连接字符串连接到的文件夹不同。这会给我一个错误,即“data.mdb”不在xxxx中。我知道“\..\..\”是原因,但是更改意味着每次不更改连接字符串我就无法调试程序。。。假设使用什么连接字符串来确保安装的应用程序和源代码都能正常运行,其次,除了install shield limited edition和visual studio 2013附带的onclick之外,还有什么软件是免费的

我会使用调试预处理器:

    #if DEBUG    
      'Your connection string
    #else
      'Live connection string
    #endif
就我个人而言,我会尽可能地模拟一个真实的环境来避免这种情况。这意味着要像部署应用程序一样工作。使用上面描述的方法,你不会在意它是否在你的本地机器上,你只需要记住在推送应用程序时,将应用程序构建为“Release”而不是“Debug”


仅仅因为调试更容易而做一些事情会让你的生活变得更困难。

所以我把它切换到release,然后输入if语句,在release和debug时再次重建我的应用程序?我必须删除所有的“\..\\”,我的连接字符串现在是。public string cnString=“Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=“+Path.GetFullPath(Application.StartupPath+”\\Data.mdb”);我更喜欢使用任何文本文件或inf文件来存储连接字符串。然后在运行时加载该连接字符串。该文件将位于应用程序文件夹中,因此应用程序可以轻松读取该文件并使用该连接字符串连接数据库。它使您的应用程序设置更加灵活。