构建解决方案时,ccrewrite 因元数据错误而中止重写失败 -> 无法解析类型引用,仅在我的机器上失败

When building solution, ccrewrite fails with rewrite aborted due to metadata errors -> could not resolve type reference, fails on my machine only

我遇到了一个非常奇怪的问题,当我尝试构建解决方案时它失败了

命令“”(解决方案)\packages\DotNet.Contracts.1.10.20606.1\Bin\ccrewrite.exe”“@(project)ccrewrite.rsp””退出代码 -1.

当我设置详细的构建输出时,我得到了更多信息:

21>  Reading assembly 'xyz' from '(yyy)\bin\xyz.dll' resulted in errors.    
21>  ccrewrite : error : Rewrite aborted due to metadata errors. Check output window    
21>  Could not resolve type reference: [System.Web.Mvc]System.Web.Mvc.IClientValidatable.

到目前为止我尝试了什么:

  1. 清理、重建、删除 bin 文件夹
  2. 升级Visual Studio到 最新版本
  3. 修复Visual Studio版本

顺便说一句,如果我正在构建那个 xyz 项目 - 它可以毫无问题地构建 从 manage nuget packages for solution 我看到 Microsoft.Aspnet.Mvc 只在那个 "xyz" 项目中

Seems like the same issue as here, but in my case it is VS 2017 and that question still has no answer...

原来,我正在构建的那个项目在尝试对引用的库进行 ccrewrite 时失败了,必须引用 Microsoft.Aspnet.Mvc 包(虽然这个项目自己没有使用它,但是一些人ccrewrite 需要它的原因是因为这个包被用在那个引用的库中)。当我添加这个包时,问题就解决了

所以,如果您遇到这个问题

1) 设置详细的构建输出(Tools->Options, Projects and Solutions->Build and Run, MSBuild project output verbosity->Detailed )

2) 检查输出中的错误是什么 window

3) 如果它是关于解决类型引用的问题 - 检查失败项目的已安装包(从 y 读取程序集 x 很可能意味着 y 缺少一些安装的包x)