c# - 无法加载文件或程序集 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?
谢谢你们。有一个美好的周末。
解决方案
在我这边,我发现问题与在本地计算机上验证这些已安装的 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)然后删除bin
和obj
文件夹,然后再次重建。
推荐阅读
- android - 构建不同风味的颤振
- html - 从右到左反转svg
- javascript - javascript无法初始化全局变量
- php - Woocommerce 运输核心调整
- angular - gapi.auth2.signin() 成功回调未在移动设备上调用
- c# - 如何在 ViewModel 中使用我的条目的“.isFocused”属性?
- c++ - 如何在这段 C++ 代码中编写部分字母重复将起作用?
- windows - Golang docker 容器无法在 Windows Home 上启动
- postgresql - Postgres 的问题:“pg_ctl:无法启动服务器”
- javascript - Gatsby / Docker 导致 MaxListenersExceededWarning