Visual Studio 在生成代码指标时如何处理缺失的依赖程序集?

How does Visual Studio handle missing dependant assemblies when generating Code Metrics?

我正在构建一个构建步骤,以使用 metrics.exe 工具将代码指标生成到我们的构建管道中。当 运行 metrics.exe /f:MyApp.Web.dll /o:results.xml 我得到以下错误。

Calculating metrics for file 'C:\Code\a\MyApp.Web\MyApp.Web.dll'.
error : CA0058 : The referenced assembly 'Microsoft.Owin.Security.Cookies, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be found. This assembly is required for analysis and was referenced by: C:\Code\a\SteelAccount.Web\Microsoft.AspNet.Identity.Owin.dll.

我的 packages.config 引用 <package id="Microsoft.Owin.Security.Cookies" version="3.0.0" targetFramework="net45" /> 所以我可以理解为什么会发生错误。没有 2.1 版的 cookies 程序集。

当我从 Visual Studio 生成代码指标时,它以某种方式克服了这个问题。有人知道怎么做吗?

当它在解决方案上运行时,它包括所有引用的 DLL,然后过滤掉任何不属于您的解决方案项目的内容。因此,如果您使用此命令,它应该包括引用的 DLL:

metrics.exe /f:drive:\solutiondirectory*.dll /o:results.xml /acm:None

编辑:我 运行 Metrics.exe 通过 .Net Reflector 结果发现比较模式有一个开关,可以让您的示例成功。 “/acm:”开关的有效值为:

  • None
  • StrongNameIgnoringVersion
  • 强名