gpt4 book ai didi

c# - CodeContracts 构建失败似乎没有任何原因

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:46 26 4
gpt4 key购买 nike

我有一个使用代码契约的 C# PCL 项目。然而,在 TeamCity 上,项目构建失败,但看起来构建在本地是成功的。然而,构建日志确实声称构建确实失败了,但它没有给出任何原因。

“基于警告构建失败”已禁用。

我收到一个奇怪的警告:

CodeContracts: Could not find the method/type 'System.Diagnostics.Contracts.PureAttribute' in assembly '[project path]\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll'

搜索谷歌给了我one relevant result与有同样问题的人。然而它除了碰撞之外没有任何反应。

Build log

我也觉得这行很奇怪:

C:\Windows\system32******.dll (1,1): message : CodeContracts: Checked 3154 assertions: 2821 correct (333 masked)

为什么二进制文件位于 system32?我认为 MSBuild 甚至没有对该文件夹的写入权限...

最佳答案

问题似乎是默认情况下它在 Microsoft.Contracts ( per spec ) 中查找契约(Contract)类型,这不起作用,因为 Microsoft.Contracts 不是我正在使用的。我正在使用位于 mscorlib 中的 System.Diagnostics.Contracts。它并没有告诉我这个,而是做了一些不合理的事情。我开始查看源代码,然后我 found the offending code但在我看来这段代码质量很差,所以我放弃了实际查找问题并创建拉取请求。

然而,如果您知道解决方案很简单:您需要使用 mscorlib 覆盖默认的合约库 Microsoft.Contracts,因此只需将以下内容添加到静态分析器的命令行:

-cclib mscorlib

这至少对我有用。我仍然认为这是由代码契约中的两个错误引起的:

  1. 由于警告,构建失败。
  2. 它试图在错误的程序集中定位 PureAttribute

关于c# - CodeContracts 构建失败似乎没有任何原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com