2009-10-08 53 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

相关问题