2009-10-08 51 views
1

我不是WinForms開發人員,但已經在ASP.NET中工作了一段時間。 我必須在VB.NET中編寫一些只需將簡單數據推送到數據庫的東西。 所以我創建了VB.NET WinForms應用程序(Visual Studio 2005)。My.Settings.MyConnectionString的作品,但app.config不?

當我運行它工作正常的應用程序使用:

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

夥計什麼是downvote? 這是我討厭關於stackoverflow的一件事。 Downvotes應該需要一個理由! – JonH 2009-10-30 19:32:26

+0

+1和http://msdn.microsoft.com/en-us/magazine/cc163812.aspx#S1 :-) – Fredou 2009-12-23 16:16:17

回答

2

你必須有一個app.config文件,並在那裏指定連接字符串。

當您編譯時,app.config將捲入MyProgram.exe.config文件,因此在構建時請查找該文件。

+0

好吧,這意味着如果我把MyProgram.exe和MyProgram.exe.config放在一起我的桌面它會正常工作? – JonH 2009-10-08 16:49:38

+0

好吧,你是對的那麼它工作正常......我想我明白了爲什麼你必須打包應用程序:)。謝謝! – JonH 2009-10-08 16:50:56

+0

它應該。我很驚訝My.Settings版本沒有任何其他文件。 – 2009-10-08 16:51:07

1

您需要將app.config(現在YourProgramName.exe.config寫爲@Joseph)複製到您放置yur exe的文件夾(本例中爲桌面)。

當你使用My.Settings.MyConnectionString你正在使用exe中的資源,所以它的工作原理。

+0

好吧,你是對的,以及:)。謝謝。 – JonH 2009-10-08 16:51:29

相關問題