My.Settings.MyConnectionString работает, но app.config не? - PullRequest
1 голос
/ 08 октября 2009

Я не разработчик 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)

То есть, если я определю строку подключения внутри свойств проекта. Если я собираю свой проект, извлекаю файл .exe из папки bin \ debug и запускаю его на своем рабочем столе, он работает ТОЛЬКО если у меня есть версия с надписью My.Settings.MyConnectionString

В противном случае, если я использую другую версию, в которой я извлекаю строку подключения из моего файла app.config, она будет работать, только если я запускаю проект через Visual Studio, она не будет работать, просто открыв .exe на моем рабочем столе , Возможно, что-то вроде ConnectionString не установлено, или иногда указывается, что объект не установлен как экземпляр чего-либо ...

Мой вопрос: почему это работает изнутри проекта?

Это потому, что при сборке проекта он не может ссылаться на этот файл app.config, поскольку я переместил его на рабочий стол?

Ответы [ 2 ]

2 голосов
/ 08 октября 2009

Вы должны иметь файл app.config и указать там строку подключения.

Когда вы компилируете, app.config будет свернут в файл MyProgram.exe.config, так что ищите этот файл при сборке.

1 голос
/ 08 октября 2009

вам нужно будет скопировать app.config (теперь YourProgramName.exe.config, как написано @Joseph) в папку (в данном случае на рабочем столе), куда вы положите yur exe.

когда вы используете My.Settings.MyConnectionString, вы используете ресурс, существующий в exe, чтобы он работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...