Wpf 如何在Visual Studio中验证和管理app.config文件?

Wpf 如何在Visual Studio中验证和管理app.config文件?,wpf,entity-framework,visual-studio,connection-string,designer,Wpf,Entity Framework,Visual Studio,Connection String,Designer,我正在Visual Studio 2015中制作WPF应用程序。数据库层使用实体框架,该框架在app.config文件中生成了一个连接字符串。数据库连接正常,应用程序运行。尽管如此,在设计时,VisualStudio抱怨“应用程序配置文件中没有命名的连接字符串”——但确实存在 由于它似乎将自己解析为运行时,所以直到现在我都忽略了警告。然而,现在这个问题干扰了设计过程——Visual Studio声称无法生成使用连接的类的实例 我尝试将app.config移动到项目结构中的不同位置,重命名它以匹配

我正在Visual Studio 2015中制作WPF应用程序。数据库层使用实体框架,该框架在app.config文件中生成了一个连接字符串。数据库连接正常,应用程序运行。尽管如此,在设计时,VisualStudio抱怨“应用程序配置文件中没有命名的连接字符串”——但确实存在

由于它似乎将自己解析为运行时,所以直到现在我都忽略了警告。然而,现在这个问题干扰了设计过程——Visual Studio声称无法生成使用连接的类的实例

我尝试将app.config移动到项目结构中的不同位置,重命名它以匹配应用程序的名称,清理和重建项目

我相信,在设计时,并非所有文件都引用相同的app.config。关于我的项目结构的一些东西必须关闭

如何确定和/或更改EF在app.config中的路径

app.config中的XML:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <connectionStrings>
  <add name="MYAPPSNAME" connectionString="metadata=res://*/MYDBNAME.csdl|res://*/MYDBNAME.ssdl|res://*/MYDBNAME.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=193.169.2.123;user id=devs;password=*********;persistsecurityinfo=True;convertzerodatetime=True;database=MYDBNAME&quot;" providerName="System.Data.EntityClient"  /></connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

如果它显示在解决方案资源管理器中,则属性将显示它所在的位置。你应该能够在那里打开和编辑它


如果app.config不在解决方案资源管理器中,则它应位于与主窗口相同的文件夹中。确保您也在VisualStudio的项目中添加(添加现有)。该文件应显示在解决方案资源管理器中。

如果它显示在解决方案资源管理器中,则属性将显示它所在的位置。你应该能够在那里打开和编辑它


如果app.config不在解决方案资源管理器中,则它应位于与主窗口相同的文件夹中。确保您也在VisualStudio的项目中添加(添加现有)。该文件应显示在解决方案资源管理器中。

我在此处找到了问题的解决方案:

本质上,我将以下内容添加到建立数据库连接的类的构造函数中:;它检查项目是否处于设计器模式,如果是,则在尝试建立数据库连接之前返回

if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) 
        return;
通过这种方式,我避免了VisualStudio试图与设计器建立db连接的问题,因此它不会抱怨,并允许我自由设计。在运行时,仍然没有问题。:)


仍然不能完全确定问题的根源——我仍然猜测在设计时,app.config文件没有被完全读取/解析,因此设计者抱怨没有足够的信息来构造这样的类

我在这里找到了解决问题的方法:

本质上,我将以下内容添加到建立数据库连接的类的构造函数中:;它检查项目是否处于设计器模式,如果是,则在尝试建立数据库连接之前返回

if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) 
        return;
通过这种方式,我避免了VisualStudio试图与设计器建立db连接的问题,因此它不会抱怨,并允许我自由设计。在运行时,仍然没有问题。:)


仍然不能完全确定问题的根源——我仍然猜测在设计时,app.config文件没有被完全读取/解析,因此设计者抱怨没有足够的信息来构造这样的类

谢谢你的回答。不幸的是,这不是我的问题。App.Config是可见的,并且“包含”在我的项目中…但是很明显,一些实体框架文件在运行时之前无法正确读取它。您是否验证了可以在设计模式下直接读取App.Config?是的。我可以读取app.config文件的XML。VisualStudio设计器表示,它找不到确实存在的连接字符串,或者在稍有不同的情况下,它表示未定义提供程序,而实际上它是。非常令人沮丧=)我已将XML添加到我的问题中。非常感谢您抽出时间。如您所见,连接字符串格式良好,数据提供程序在“实体框架”部分注册。“请发布您如何阅读XML”感谢您的回答。不幸的是,这不是我的问题。App.Config是可见的,并且“包含”在我的项目中…但是很明显,一些实体框架文件在运行时之前无法正确读取它。您是否验证了可以在设计模式下直接读取App.Config?是的。我可以读取app.config文件的XML。VisualStudio设计器表示,它找不到确实存在的连接字符串,或者在稍有不同的情况下,它表示未定义提供程序,而实际上它是。非常令人沮丧=)我已将XML添加到我的问题中。非常感谢您抽出时间。如您所见,连接字符串格式良好,数据提供程序在“实体框架”部分注册。“请张贴您是如何阅读XML的”您的EF是在同一个项目中还是在一个单独的dll中?在运行时,从项目的.config读取连接字符串,在设计时,从dll的.config文件读取连接字符串。是否检查了EntityFramework DbContext在app.config中希望看到的连接字符串名称?MYAPPSNAME正确吗?我检查过了,是的,连接字符串都是正确的-出于某种原因,项目在设计时无法看到/理解它。似乎在运行时它会找到app.config并读取它并建立连接,没有问题。:)我在这附近找到了一个工作:你的EF是在同一个项目中还是一个单独的dll?在运行时,从项目的.config读取连接字符串,在设计时,从dll的.config文件读取连接字符串。是否检查了EntityFramework DbContext在app.config中希望看到的连接字符串名称?MYAPPSNAME正确吗?我确实检查过了,是的,连接字符串都是正确的-出于某种原因,项目无法看到/理解