My.Settings.MyConnectionString的作品,但app.config不?
我不是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文件,因为我已将它移动到我的桌面?
你必须有一个app.config文件,并在那里指定连接字符串。
当您编译时,app.config将卷入MyProgram.exe.config文件,因此在构建时请查找该文件。
您需要将app.config(现在YourProgramName.exe.config写为@Joseph)复制到您放置yur exe的文件夹(本例中为桌面)。
当你使用My.Settings.MyConnectionString
你正在使用exe中的资源,所以它的工作原理。
好吧,你是对的,以及:)。谢谢。 – JonH 2009-10-08 16:51:29
伙计什么是downvote? 这是我讨厌关于stackoverflow的一件事。 Downvotes应该需要一个理由! – JonH 2009-10-30 19:32:26
+1和http://msdn.microsoft.com/en-us/magazine/cc163812.aspx#S1 :-) – Fredou 2009-12-23 16:16:17