My.Settings.MyConnectionString有效,但app.config不?

时间:2009-10-08 16:45:29

标签: vb.net configuration connection-string app-config

我不是WinForms的开发人员,但已经做了很长一段时间的ASP.NET。 我必须在VB.NET中写一些东西,只是将一些简单的数据推送到数据库。 所以我创建了VB.NET WinForms应用程序(Visual Studio 2005)。

当我运行应用程序时,它可以正常使用:

    Dim conMyData As SqlConnection
    Dim cmdInsert As SqlCommand
    Dim isSaved As Boolean
    isSaved = True
    conMyData = Nothing

    Try
        conMyData = New SqlConnection(My.Settings.MyConnectionString)
        cmdInsert = New SqlCommand("insComputer2", conMyData)

如果我使用它也可以正常工作:

    Dim conMyData As SqlConnection
    Dim cmdInsert As SqlCommand
    Dim isSaved As Boolean
    isSaved = True
    conMyData = Nothing
    Dim str As String = ConfigurationManager.ConnectionStrings("connect").ConnectionString

    Try
        conMyData = New SqlConnection(str)
        cmdInsert = New SqlCommand("insComputer2", conMyData)

也就是说,如果我在项目属性中定义连接字符串。如果我构建我的项目,从bin \ debug文件夹中抓取.exe并在我的桌面上运行它,只有我的版本说My.Settings.MyConnectionString

否则,如果我使用其他版本从我的app.config文件中提取连接字符串,它只能在我通过visual studio运行项目时运行,它只能在桌面上打开.exe来运行。它的类似于ConnectionString没有设置,或者有时它声明对象没有设置为某个实例......

我的问题是:为什么它在项目中起作用?

是不是因为当我构建项目时,它无法引用该app.config文件,因为我已将其移动到桌面上?

2 个答案:

答案 0 :(得分:2)

您必须拥有app.config文件并在其中指定连接字符串。

编译时,app.config将汇总到MyProgram.exe.config文件中,因此在进行构建时请查找该文件。

答案 1 :(得分:1)

您需要将app.config(现在由@Joseph编写的YourProgramName.exe.config)复制到您放置yur exe的文件夹(在本例中为desktop)。

当您使用My.Settings.MyConnectionString时,您正在使用exe中存在的资源,因此它可以正常工作。