我不是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)
也就是说,如果我在项目属性中定义连接字符串。如果我构建我的项目,从bin \ debug文件夹中抓取.exe并在我的桌面上运行它,只有我的版本说My.Settings.MyConnectionString
否则,如果我使用其他版本从我的app.config文件中提取连接字符串,它只能在我通过visual studio运行项目时运行,它只能在桌面上打开.exe来运行。它的类似于ConnectionString没有设置,或者有时它声明对象没有设置为某个实例......
我的问题是:为什么它在项目中起作用?
是不是因为当我构建项目时,它无法引用该app.config文件,因为我已将其移动到桌面上?
答案 0 :(得分:2)
您必须拥有app.config文件并在其中指定连接字符串。
编译时,app.config将汇总到MyProgram.exe.config文件中,因此在进行构建时请查找该文件。
答案 1 :(得分:1)
您需要将app.config(现在由@Joseph编写的YourProgramName.exe.config)复制到您放置yur exe的文件夹(在本例中为desktop)。
当您使用My.Settings.MyConnectionString
时,您正在使用exe中存在的资源,因此它可以正常工作。