C# 无法加载文件或程序集';Microsoft.Build.Framework';(VS 2017)
当我尝试运行命令“更新数据库”时,出现以下异常: 指定'-Verbose'标志以查看正在应用的SQL语句 到目标数据库。System.IO.FileNotFoundException:无法 加载文件或程序集“Microsoft.Build.Framework,版本=15.1.0.0, 区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或其 依赖关系。系统找不到指定的文件。文件名: 'Microsoft.Build.Framework,版本=15.1.0.0,区域性=中性, PublicKeyToken=b03f5f7f11d50a3a' 警告:程序集绑定日志记录已关闭。要启用程序集绑定 记录失败,请设置注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)到1。注:有 某些性能损失是否与程序集绑定失败相关 登录中。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] 无法加载文件或程序集“Microsoft.Build.Framework”, 版本=15.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或 它的一个依赖项。系统找不到指定的文件`C# 无法加载文件或程序集';Microsoft.Build.Framework';(VS 2017),c#,msbuild,migration,visual-studio-2017,C#,Msbuild,Migration,Visual Studio 2017,当我尝试运行命令“更新数据库”时,出现以下异常: 指定'-Verbose'标志以查看正在应用的SQL语句 到目标数据库。System.IO.FileNotFoundException:无法 加载文件或程序集“Microsoft.Build.Framework,版本=15.1.0.0, 区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或其 依赖关系。系统找不到指定的文件。文件名: 'Microsoft.Build.Framework,版本=15.1.0.0,区域性=中
我相信我和你有同样的问题。我没有保存整个错误消息,但我的错误消息是 “无法加载文件或程序集”Microsoft.Build.Framework, 版本=15.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或 它的一个依赖项。系统找不到指定的文件。' 我正在使用Visual Studio 2017,并尝试在
添加迁移之后执行更新数据库
要解决此问题,我关闭Visual Studio并重新打开它,然后再次运行更新数据库
这可能会解决您的问题,也可能不会解决,但我想我会发布,以防万一。此问题的根本原因来自devenv.exe.config
文件到Microsoft.Build.Framework.dll
的相对路径(请参阅xml标记)
某些Visual Studio扩展正在更改当前目录,并使相对路径无效
要修复此问题,请在C:\ProgramFiles(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\
,我们遇到了这个问题,下面是我们需要做的事情:
问题是我们配置了一个数据库命令拦截器(IDbCommandInterceptor)
,该拦截器调用了HttpRuntime.Cache[“somekey”
],由于某种原因,迁移命令无法运行。删除此依赖项后,所有命令都能正常运行。也许HttpRuntime
无法找到构建框架dll
因此,当迁移命令失败时,请检查整个调用堆栈,查看是否存在类似问题。我找到了一个似乎可以永久解决问题的解决方法,至少在运行VS 2017 Professional 15.5.2和Entity Framework 6.1.1的环境中
基本上,将DLL(以及一些相关的DLL)安装到GAC(全局程序集缓存)中,问题就会消失
遵循以下步骤:
关闭Visual Studio 2017的所有运行实例
启动Visual Studio 2017 Developer命令提示符
键入以下命令(将Professional替换为您的企业版或社区版,或相应地调整路径):
重新启动Visual Studio 2017
本质上,当.NET尝试加载DLL时,GAC(在大多数情况下)将获得优先权,FileNotFoundException将消失,因为您的DLL现在将通过GAC解析
同样,它对我很有效,只是一个解决办法,它本身不会解决核心问题,但至少在尝试使用EF迁移时,我不必一直重新启动VS,这对我来说已经足够好了。如果重新启动Visual Studio不起作用,请转到任务管理器/流程资源管理器和技能VBCSCompiler.exe
建议使用我丢失的文件或程序集版本与问题不同
我在尝试发布ASP.net项目时出现此错误
Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
我通过安装解决了这个问题
我想我的问题是因为我在2017年发布了用VS 2015构建的项目。希望可以帮助其他有同样问题的人。关闭和重新打开Visual Studio非常有魅力 感谢那些已经发帖的人。我的情况是通过上述的综合解决的。我有几个版本的VisualStudio:2015、2017、2019。在某种程度上,MSBUILD的版本从15.1变为15.9,我通过更新C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.config
文件以指向15.9库,解决了这个问题。以下是其中一个条目的示例:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.9.0.0"/>
<codeBase version="15.9.0.0" href="..\..\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" />
</dependentAssembly>
在macOS上更新XCode/Mono组件时,我也遇到了同样的问题
解决方案是将Visual Studio for Mac更新为最新版本
我认为这个问题是使用.NET Core 3.0包中的新MSBuild工具的原因,该包随新的XCode/Mono版本一起安装。在我的情况下,某些东西(可能是NuGet更新)确实在web.config文件中添加了AssemblyBinding:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
</dependentAssembly>
删除dependentAssemby条目后,我可以再次发布该项目。我们的本地构建脚本使用较旧版本的nuget.exe
(4.7.1.5393
)来恢复nuget包。更新到Visual Studio 2019版本16.5.0
后,我们开始出现此错误。更新到最新版本的nuget.exe
(5.4.0.6315
)为我们解决了这个问题
nuget.exe
可以在
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
</dependentAssembly>
<compilation debug="true" targetFramework="4.5.2">
<assemblies>
<add assembly="Microsoft.Build.Framework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
</compilation>