代码之家  ›  专栏  ›  技术社区  ›  JonH

My.Settings.MyConnectionString可以工作,但app.config不能?

  •  1
  • JonH  · 技术社区  · 15 年前

    我必须在VB.NET中编写一些东西,将一些简单的数据推送到数据库中。 因此,我创建了VB.NET WinForms应用程序(VisualStudio2005)。

    当我运行应用程序时,它可以很好地使用:

        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 not set的东西,或者有时它表示对象未设置为某个对象的实例。。。

    是否因为我将app.config文件移动到桌面后,在生成项目时无法引用该文件?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Joseph    15 年前

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

    编译时,app.config将卷起到MyProgram.exe.config文件中,因此在生成时查找该文件。

        2
  •  1
  •   TheVillageIdiot    15 年前

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

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