2016-07-09 8 views
0

Ich erstelle einen Build-Schritt, um Code-Metriken mit dem metrics.exe-Tool in unserer Build-Pipeline zu generieren. Beim Ausführen von metrics.exe /f:MyApp.Web.dll /o:results.xml erhalte ich den folgenden Fehler.Wie behandelt Visual Studio fehlende abhängige Assemblys beim Generieren von Code-Metriken?

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. 

Mein packages.config verweist <package id="Microsoft.Owin.Security.Cookies" version="3.0.0" targetFramework="net45" /> und so kann ich verstehen, warum der Fehler auftritt. Es gibt keine Version 2.1 der Cookies Assembly.

Wenn ich Code-Metriken von Visual Studio generieren, wird dieses Problem irgendwie behoben. Wer weiß wie?

+0

Ich habe ein Beispiel für das Problem hier hinzugefügt https://github.com/ naeemsarfraz/CodeMetricsProblemExample –

Antwort

1

Wenn es über eine Lösung ausgeführt wird, enthält es alle referenzierten DLLs und filtert dann alle heraus, die nicht zu Ihren Lösungsprojekten gehören. Also, wenn Sie diesen Befehl verwendet wird, sollte es gehören die referenzierten DLLs:

metrics.exe/f: Laufwerk: \ solutiondirectory * DLL /o:results.xml /acm: Keine

Edit: Ich lief Metrics.exe durch .NET Reflector und es stellt sich heraus, dass es einen Schalter für den Vergleichsmodus, der Ihr Beispiel erfolgreich sein kann. Gültige Werte für die "/ acm:" Schalter sind:

  • Keine
  • StrongNameIgnoringVersion
  • Strong
+0

Siehe das Githib Repo für ein Beispiel, obwohl Referenzen nicht so komplex wie das tatsächliche Projekt. Ich werde sehen, ob ich mehr hinzufügen kann. https://github.com/naeemsarfraz/CodeMetricsProblemExample –

+0

Der Schalter '/ acm: None' tat es. Dachte nicht, Reflektor, +1 zu verwenden –