这已经困扰了我两天了。我有一个WPF应用程序,它有一个数据库,专注于手写识别。因此,我在app.config文件中有一个连接字符串,以及应用程序启动时的启动参数 - 这是启用版本2运行时,否则手写识别不起作用。调试时一切都很完美...
我使用Visual Studio安装向导创建了一个安装并安装了该应用程序。安装顺利,但现在每次我尝试使用app.config文件时,都会抛出NullReference。
所以我想知道: 我应该将app.config文件设置为资源或嵌入式资源,还是将其保留为内容? 为什么app在调试时会成功读取app.config文件的内容,但是一旦安装它在检索connectionstring属性时会崩溃? 在创建安装时,是否有一些我应该执行的设置,以便app.config文件可以在代码中使用? (因为app.config文件是程序文件目录)。
所以现在,如果我对连接字符串进行硬编码(在变量中)一切正常,但手写识别不起作用,因为似乎没有使用app.config文件。
我有点紧迫,所以任何帮助都会深深感激。
PS:只是为了它,这是app.config文件的内容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<appSettings>
</appSettings>
<connectionStrings>
<add name ="conString" connectionString="server=ServerName;database=dbname;Integrated Security='true'"/>
</connectionStrings>
</configuration>
答案 0 :(得分:1)
app.config
文件是从settings
自动生成的(在Visual Studio的Properties / Settings.settings下)。如果此连接字符串在设置中,您将能够通过以下方式访问它:
var conString = Settings.Default.conString;
它也将被编译到项目中,只有在app.config
文件可用时才会被覆盖。
此外,app.config
文件必须是与可执行文件.exe
文件位于同一文件夹中的文件,并且必须具有相同的名称。例如,如果它是myprogram.exe
,则myprogram.config
文件应位于同一目录中。