Msbuild 由于nuget引用具有约定程序集,生成计算机上的ccrewrite失败

Msbuild 由于nuget引用具有约定程序集,生成计算机上的ccrewrite失败,msbuild,nuget,code-contracts,nuget-package,Msbuild,Nuget,Code Contracts,Nuget Package,以下是全部内容: 我构建了两个包含 A.nupkg:A.dll,A.Contracts.dll B.nupkg:B.dll,B.Contracts.dll;B取决于A 我根据a和B创建了一个新项目和解决方案C,并将“合同参考程序集”设置为Build 在本地,一切都很好。但是,在生成服务器(MSBuild 2012.2)上,ccrewrite引发异常,表示ccrewrite:error:Rewrite由于元数据错误而中止。检查输出窗口。将日志记录设置为Diagnostics,我得到以下信息:

以下是全部内容:

  • 我构建了两个包含
    • A.nupkg:A.dll,A.Contracts.dll
    • B.nupkg:B.dll,B.Contracts.dll;B取决于A
  • 我根据a和B创建了一个新项目和解决方案C,并将“合同参考程序集”设置为Build
  • 在本地,一切都很好。但是,在生成服务器(MSBuild 2012.2)上,ccrewrite引发异常,表示ccrewrite:error:Rewrite由于元数据错误而中止。检查输出窗口。将日志记录设置为Diagnostics,我得到以下信息:

    从“C:\Builds\1\Product\Build Dev CI\Sources\packages\B.1.2.13156.9\lib\net40\B.dll”读取程序集“B”时出错。(任务ID:1284) 无法解析类型引用:[A.Class]A.Class。(任务ID:1284)


    你知道为什么这在构建服务器上不起作用吗?

    Visual Studio 2017中仍然存在此问题,这很奇怪,因为它只在我的机器上出现故障。。。解决方案清理,重建没有帮助,也尝试了Visual Studio修复-但同样的结果我知道它“有点”晚了,但你是否以某种方式解决了这个问题?好吧,我放弃了使用代码契约,因为新的C#8将解决我的大多数先决条件问题,即非空性。另外,我也为我迟来的回答感到抱歉:(。