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/3/wix/2.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 Wix安装项目中断无关迁移更新数据库调用_Entity Framework_Wix_Entity Framework Migrations - Fatal编程技术网

Entity framework Wix安装项目中断无关迁移更新数据库调用

Entity framework Wix安装项目中断无关迁移更新数据库调用,entity-framework,wix,entity-framework-migrations,Entity Framework,Wix,Entity Framework Migrations,在将不相关的Wix安装项目添加到解决方案后,在ASP.NET MVC Web应用程序上从Package Manager控制台运行update database失败 为什么updatedatabase要访问这个不相关的项目?为什么wix项目的存在会触发无法找到的程序集加载?我该如何解决这个问题 这种情况发生在一个更大的解决方案中,包括web、桌面、安装程序项目,但经过相当多的思考后,我单独复制了这种情况: 使用ASP.NET MVC Web应用程序、实体框架、启用迁移、添加WebMatrix组件

在将不相关的Wix安装项目添加到解决方案后,在ASP.NET MVC Web应用程序上从Package Manager控制台运行
update database
失败

为什么
updatedatabase
要访问这个不相关的项目?为什么wix项目的存在会触发无法找到的程序集加载?我该如何解决这个问题

这种情况发生在一个更大的解决方案中,包括web、桌面、安装程序项目,但经过相当多的思考后,我单独复制了这种情况:

  • 使用ASP.NET MVC Web应用程序、实体框架、启用迁移、添加WebMatrix组件、设置角色提供程序来设置新的库存标准VS解决方案
  • 添加Configuration.Seed()方法调用
    WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(..)
    System.Web.Security.Roles
运行
更新数据库
。它会很好用的。现在添加一个Wix安装项目(无需配置),它将在执行
Seed()
时失败

Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
因此,当试图从Package Manager控制台通过更新数据库调用WebSecurity/WebMatrix方法时,我的解决方案中有一个Wix项目似乎会触发额外(未找到)程序集的加载

解决方法:卸载Wix安装项目并重新启动Visual Studio。没有必要完全删除该项目

将缺少的dll添加到GAC或对machine.config的引用没有帮助。找到dll,但加载时出错

System.IO.FileLoadException: Loading this assembly would produce a different grant set from other instances. (Exception from HRESULT: 0x80131401)
使用
FUSLOGVW.exe
记录程序集加载事件没有帮助。它基本上表明,
updatedatabase
找不到v15.1dll,因为它不在GAC中,并且没有指向它的app/host/system配置文件

从正在运行的web应用程序运行seed方法(启用自动迁移)效果良好

是的,我正在将PMC“默认项目”设置为web应用程序,即web应用程序上的点
updatedatabase

详情:

  • Visual Studio Professional 2017关于Win 10 Pro的全面修补
  • 最近从2015年起升级了VS。在2015年之前没有这样的问题
  • Wix工具集3.11.0.1528
  • 软件包管理器控制台4.1.0.2427
  • System.Web.Mvc 5.2.3.0
  • 实体框架6.1.3
  • WebMatrix.Data.dll 3.0.0.0
  • WebMatrix.WebData.dll 3.0.0.0
  • Microsoft.Build.Framework.dll v15.1.0.0位于C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\中,Visual Studio在其app.config中重定向到它
片段:

Configuration.cs:

class Configuration : DbMigrationsConfiguration<MyDbContextHere>
{
    public Configuration() { AutomaticMigrationsEnabled = false; }

    protected override void Seed(Stash context)
    {
        WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfiles", "UserId", "UserName", autoCreateTables: true);    
        if(!Roles.RoleExists("G1")) Roles.CreateRole("G1");
    }
}
`
类配置:dbmigrionsconfiguration
{
公共配置(){AutomaticMigrationsEnabled=false;}
受保护的覆盖无效种子(隐藏上下文)
{
WebSecurity.InitializeDatabaseConnection(“DefaultConnection”、“UserProfiles”、“UserId”、“UserName”,autoCreateTables:true);
如果(!Roles.RoleExists(“G1”))Roles.CreateRole(“G1”);
}
}
`
web.config:

`
<configuration>  
  <system.web>
    <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
      <providers>
        <clear />
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
      </providers>
    </roleManager>
`

这个讨论看起来很相关。有一些建议,但没有适合每个人的解决方案。你找到解决办法了吗?威利:我们还没有找到解决办法。当前解决方法:我们卸载安装程序项目并在更新数据库之前重新启动VS。痛苦,但现在没有足够的时间进一步调查。当我有机会的时候,我会看看你的链接。谢谢这个讨论看起来很相关。有一些建议,但没有适合每个人的解决方案。你找到解决办法了吗?威利:我们还没有找到解决办法。当前解决方法:我们卸载安装程序项目并在更新数据库之前重新启动VS。痛苦,但现在没有足够的时间进一步调查。当我有机会的时候,我会看看你的链接。谢谢T