首页 > 解决方案 > 无法加载文件或程序集 Microsoft.Build.Utilities.Core。为什么 DotNetCompilerPlatform 依赖于旧的 Build.Utilities.Core?

问题描述

我从 github 下载了一个示例 C# 项目:https ://github.com/dotnet/AspNetDocs

但是我在构建时收到一条错误消息: 无法从程序集“......Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0\build\net472....\tasks\ DotNetCompilerPlatformTasks.dll'。 无法加载文件或程序集“Microsoft.Build.Utilities.Core, Version=14.0.0.0 ,...”或其依赖项之一。该系统找不到指定的文件。

我正在使用 Visual Studio 2013 更新 5。我的项目的目标框架是 .NET Framework 4.8。

我已经安装了 Nuget 包: Microsoft.CodeDom.Providers.DotNetCompilerPlatform v3.6.0 Microsoft.Build.Utilities.Core v16.9.0

根据错误消息,Nuget 包 DotNetCompilerPlatform 似乎需要旧的 Build.Utilities.Core v14.0.0.0,而我安装的是最新版本 V16.9.0。

但是在我卸载包 v16.9.0 之后,我未能 nuget Install-Package v14.0.0.0。

是否可以配置 DotNetCompilerPlatform 以使用最新的 Build.Utilities.Core?

谢谢你们。有一个美好的周末。

标签: c#.netvisual-studionuget.net-assembly

解决方案


在我这边,我发现问题与在本地计算机上验证这些已安装的 NuGet 包有关。

首先,你应该将ProductsApp文件夹的完整路径缩短一点。否则,你将面临The fully qualified file name must be less than 260 characters.

因此,您必须将ProductsApp文件夹复制到C:\D:\直接复制,然后在该路径上的 VS IDE 下打开它。

之后,重新安装一次 nuget 包。

update-package -reinstall工具--> Nuget 包管理器-->包管理器控制台下

之后,如果您仍然遇到问题,则必须在文件bindredirect下添加该新dll,web.config如果您使用最新版本的功能,它可以使用最新版本。它只是找不到旧版本的 dll,因为您在代码编辑器下使用了旧版本的代码。

解决方法是为其添加 bindredirect:

1)打开 web.config 文件:

2)添加这些:</p>

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      .....
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="xxx" />
        <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
 </runtime>

3)然后删除binobj文件夹,然后再次重建。


推荐阅读