Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 尝试在生产环境上运行EF Code first Migrate.exe工具失败_Entity Framework_Entity Framework Migrations - Fatal编程技术网

Entity framework 尝试在生产环境上运行EF Code first Migrate.exe工具失败

Entity framework 尝试在生产环境上运行EF Code first Migrate.exe工具失败,entity-framework,entity-framework-migrations,Entity Framework,Entity Framework Migrations,我使用的是EntityFramework版本6.1.3 我将migrate.exe从EntityFramework版本6.1.3软件包工具文件夹复制到我网站的bin文件夹 我的网站是用x86CPU和TargetFramework4.5.1编译并发布到生产环境的 我运行以下命令: D:\Sites\MatrixPortal\bin>migrate.exe d:\sites\MatrixPortal\bin\MatrixPortal.BL.dll /startUpDirectory=“d:\Site

我使用的是EntityFramework版本6.1.3

我将migrate.exe从EntityFramework版本6.1.3软件包工具文件夹复制到我网站的bin文件夹

我的网站是用x86CPU和TargetFramework4.5.1编译并发布到生产环境的

我运行以下命令:

D:\Sites\MatrixPortal\bin>migrate.exe d:\sites\MatrixPortal\bin\MatrixPortal.BL.dll /startUpDirectory=“d:\Sites\MatrixPortal\bin” /startUpConfigurationFile=“d:\Sites\MatrixPortal\Web.config”

我得到以下错误:

错误:无法加载文件或程序集 'd:\sites\MatrixPortal\bin\MatrixPortal.BL'或其 依赖关系。给定的程序集名称或代码基无效。 (来自HRESULT的异常:0x80131047)

编辑:

当我尝试这个:

迁移MatrixPortal.BL.dll/verbose

我发现了其他错误:

System.BadImageFormatException:无法加载文件或程序集 “MatrixPortal.BL”或其依赖项之一。有人试图 加载格式不正确的程序。文件名:“MatrixPortal.BL” 在System.Reflection.RuntimeAssembly.\u nLoad(AssemblyName文件名, 字符串代码库、证据汇编安全性、运行时汇编 位置提示、堆栈爬网标记和堆栈标记、IntPtr PPRIVOSTBINDER、, 布尔throwOnFileNotFound,布尔用于内省,布尔 抑制安全检查)在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef、证据assemblySecurity、RuntimeAssembly reqAssembly、, stackcrawmark和stackMark,IntPtr pPrivHostBinder,布尔值 throwOnFileNotFound,用于内省的布尔值,布尔值 抑制安全检查)在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, 证据汇编安全,StackScrawMark&stackMark,IntPtr pPrivHostBinder,用于内省的布尔值)位于 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, 证据集合安全性,堆栈爬网标记和堆栈标记,布尔值 用于内省)在System.Reflection.Assembly.Load(字符串 汇编字符串)在 System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.LoadAssembly(字符串 姓名)在 System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration() 在 System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run() 在System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)在 System.Data.Entity.Migrations.Console.Program.Run()位于 System.Data.Entity.Migrations.Console.Program.Main(字符串[]args)

===预绑定状态信息===日志:DisplayName=MatrixPortal.BL(部分)警告:已为 程序集:WRN:assembly Name:MatrixPortal.BL |域ID:2 WRN:A 当仅显示部件显示名称的一部分时,会发生部分绑定 假如警告:这可能导致活页夹加载错误 装配警告:建议提供完全指定的文本 程序集的标识,WRN:由简单名称组成, 版本、区域性和公钥令牌。警告:见白皮书 有关更多信息和 这一问题的共同解决办法。日志:Appbase= file:///D:/Sites/MatrixPortal/bin/ 日志:初始PrivatePath=NULL 调用程序集:EntityFramework,版本=6.0.0.0,区域性=neutral, PublicKeyToken=b77a5c561934e089。 ==日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件: C:\Users\guy\u b\AppData\Local\Temp\tmpC402.tmp日志:使用主机 配置文件:日志:使用来自的计算机配置文件 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config。 日志:此时未将策略应用于引用(私有, 自定义、部分或基于位置的部件绑定)。日志:正在尝试 下载新网址 file:///D:/Sites/MatrixPortal/bin/MatrixPortal.BL.DLL. 错误:失败 完成装配设置(hr=0x8007000b)。调查结束了

错误:无法加载文件或程序集“MatrixPortal.BL”或其一个 依赖关系。试图加载带有错误代码的程序 格式

我也试过:

并创建了一个名为Redirect.config的文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
                                <bindingRedirect oldVersion="0.0.0-6.1.3" newVersion="6.1.3" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

但得到了与上面相同的错误:(

已解决

我已经发布了一个使用x86目标cpu的网站项目,显然它不是真正的x86,我不知道为什么,可能是一个bug

将发布更改为任何可用的cpu后。我可以使用以下参数运行migrate.exe而无错误:

migrate.exe MatrixPortal.BL.dll /verbose /startUpDataDirectory="D:\Sites\MatrixPortal" /startUpConfigurationFile="D:\Sites\MatrixPortal\Web.config"

在我的例子中,我得到错误是因为我写了
migrate.\MyAssembly.dll
而不是
migrate MyAssembly.dll


参见文档部分。

Here()上面写着“这可能是由于不正确地指定了程序集名称造成的”。另外,请参见:感谢@miparnisari,在阅读了上面的内容后,我问了这个问题,我仔细检查了我的程序集名称,并浪费了数小时试图以多种方式运行此工具,如Zasz的回答