Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
C# 无法加载文件或程序集';Microsoft.Build.Framework';(VS 2017)_C#_Msbuild_Migration_Visual Studio 2017 - Fatal编程技术网

C# 无法加载文件或程序集';Microsoft.Build.Framework';(VS 2017)

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,区域性=中

当我尝试运行命令“更新数据库”时,出现以下异常:

指定'-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'或 它的一个依赖项。系统找不到指定的文件`


我相信我和你有同样的问题。我没有保存整个错误消息,但我的错误消息是

“无法加载文件或程序集”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>