当我尝试运行命令“update-database”时,我得到以下异常:
指定'-Verbose'标志以查看应用于目标数据库的SQL语句。 System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。文件名:'Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
警告:装配绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失。要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。
无法加载文件或程序集“Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件
我相信我遇到了和你一样的问题(我没有保存整个错误信息,但我的错误信息是
'无法加载文件或程序集'Microsoft.Build.Framework,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。'
我正在使用Visual Studio 2017,并尝试在Add-Migration之后执行Update-Database。
为解决此问题,我关闭了Visual Studio并重新打开它,然后再次重新运行Update-Database。
这可能会或可能不会解决您的问题,但我想我会发布以防万一它会有所帮助。
此问题的根本原因来自devenv.exe.config
文件中的相对路径到Microsoft.Build.Framework.dll
(请参阅xml标记)。
某些Visual Studio Extensions正在更改当前目录并使相对路径无效。
要解决此问题,请在C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\
目录中打开此文件。并用..\..\MSBuild\15.0\Bin\
替换所有C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\
。
我找到了一个似乎可以很好地解决问题的解决方法,至少在运行VS 2017 Professional 15.5.2和Entity Framework 6.1.1的环境中是这样。
基本上,将DLL(带有一些相关的)安装到GAC(全局程序集缓存)中,问题就会消失。
跟着这些步骤:
1-关闭Visual Studio 2017的所有正在运行的实例
2-启动Visual Studio 2017 Developer命令提示符
3-键入以下命令(将Professional替换为您的版本,Enterprise或Community,或相应地调整路径):
gacutil / i“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Build.Framework.dll”
gacutil / i“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Build.dll”
gacutil / i“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Build.Engine.dll”
gacutil / i“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Build.Conversion.Core.dll”
gacutil / i“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Build.Tasks.Core.dll”
gacutil / i“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Build.Utilities.Core.dll”
4-重新启动Visual Studio 2017
从本质上讲,当.NET尝试加载DLL时,GAC将(在大多数情况下)优先使用,而FileNotFoundException将会消失,因为现在可以通过GAC解析DLL。
同样,它适用于我,它只是一个解决方法,它不会解决核心问题本身,但至少我不必在尝试使用EF迁移时一直重启VS,这对我来说已经足够了。
关闭并重新打开Visual Studio就像一个魅力!
我们遇到了这个问题,这就是我们在案例中需要做的事情:
问题是我们配置了一个名为(IDbCommandInterceptor)
的数据库命令拦截器HttpRuntime.Cache["somekey"
,由于某些原因,迁移命令因此而无法运行。删除此依赖性后,所有命令都运行完美。也许HttpRuntime
无法找到Build Framework dll?
因此,当迁移命令无法查看是否存在类似问题时,请检查整个callstack。
我丢失的文件或程序集版本与问题不同。
我尝试发布我的ASP.net项目时出现此错误
Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
我通过安装Microsoft Build Tools 2015解决了这个问题
我认为我的问题是由于我在VS 2017中发布了使用VS 2015构建的项目。希望可以帮助其他有同样问题的人。
模型中的复杂类型也可能导致此问题。示例:如果您的模型中有List。