使用 SQL Server 数据库和实体框架错误的 Windows 应用程序部署

Posted

技术标签:

【中文标题】使用 SQL Server 数据库和实体框架错误的 Windows 应用程序部署【英文标题】:Windows application deployment with SQL Server database and Entity Framework error 【发布时间】:2020-02-15 17:53:32 【问题描述】:

我有一个使用实体框架和代码优先方法开发的 Windows 应用程序。它在我自己的电脑上完美运行。但是,当我尝试将应用程序部署到安装了 SQL Server 的客户端时,它会引发以下错误。我在这里想念什么?

System.BadImageFormatException:无法加载文件或程序集“EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。该模块应包含程序集清单。 文件名:'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' at BLL.BLMasters.BLCompany..ctor()

这是我的app.config 文件:

<configuration>
    <configSections>
        <section name="entityFramework"
                 type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                 requirePermission="false"/>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
    </startup>
    <connectionStrings>
        <add name="MyDBConnectionString" 
             providerName="System.Data.SqlClient"
             connectionString="Data Source=DESKTOP-NMSSFU8;Initial Catalog=AMSDEV;Integrated Security=True; Max Pool Size=200;" />
    </connectionStrings>
    <entityFramework>
        <providers>
            <provider invariantName="System.Data.SqlClient" 
                      type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
        </providers>
    </entityFramework>
</configuration>

【问题讨论】:

【参考方案1】:

您能否检查一下您所有项目的项目属性是否设置为正确的目标平台?

转到您的项目属性 → 构建 → 目标平台。

检查这是否设置为所有项目的值之一:x86、x64、任何 CPU。

尝试为解决方案中的所有项目选择“任何 CPU”,然后将其部署到客户端计算机并检查。

当你的 CPU 架构与目标机器的编译版本不同时,通常会发生此错误。选择 Any CPU 通常可以解决问题。

【讨论】:

以上是关于使用 SQL Server 数据库和实体框架错误的 Windows 应用程序部署的主要内容,如果未能解决你的问题,请参考以下文章

带有实体框架和 SQL Server 数据库的 ASP.NET MVC - 图像未显示在视图中......错误显示“无法将“字节”转换为“字符串”

在 Visual Studio 中使用实体框架与 SQL Server 的连接问题

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

将 SQL Server tinyint 映射到 Int16 的实体框架

同时将实体框架与 SQL Server 和 SQLite 数据库一起使用

我无法使用 SQL Server Express 和实体框架创建数据库文件