2016-08-08 4 views
3

Ich schreibe ein Programm in. NET mit Visual Studio 2015. Ich habe das Problem, dass unser Verschleierungstool nicht funktioniert, wenn es dynamische Anrufe irgendwo im Code gibt, also muss ich sie loswerden .Markieren Sie dynamische Anrufe in Code

Ist es möglich, dass Visual Studio den Code markiert, der dynamic verwendet? Vielleicht eine Warnung oder so?

EDIT:

Ich habe nicht das Wort dynamic überall in meinem Code, aber es gibt immer noch dynamische Anrufe. Sie stammen von der Drittanbieter-API, die ich verwende. Beispiel Ausschnitt aus dem API:

public class ThirdPartyClass 
{ 
    public dynamic Foo 
    { 
     get { ... // returns an instance of class FooClass } 
    } 

    ... 
} 

Die Klasse FooClass hat eine Methode Bar().

Jetzt sagen wir irgendwann in meinem Code habe ich eine Instanz ThirdPartyClass namens tpc. Die folgende Codezeile

var barVar = tpc.Foo.Bar(); 

macht einen dynamischen Aufruf, weil tpc.Foo dynamisch ist. Um den dynamischen Aufruf zu entfernen schreibe ich statt

var barVar = ((FooClass)tpc.Foo).Bar(); 

Dies ist, was ich brauche, um zu tun, um die Verdunkelung Werkzeug Arbeit wieder zu machen. Aber wie finde ich die dynamischen Anrufe, ohne den Code manuell durchzugehen?

+2

Möchten Sie den Code umgestalten, um die dynamischen Verwendungen zu entfernen? Möchten Sie vor der Kompilierung wissen, wo die Dynamik verwendet wird? Vielleicht vereinfache ich Ihr Problem, aber ist nicht STRG + UMSCHALT + F und Suche nach "dynamisch" die Lösung für Ihr Problem? – MichaelThePotato

+0

Du könntest einfach Strg + F dynamisch;) Vielleicht gibt es StyleCop-Regeln, die den Gebrauch von Dynamic verbieten, du könntest sie benutzen. – Mafii

+0

@MichaelThePotato, @Mafii Bitte lesen Sie meine aktualisierte Frage. Die Suche nach dem Schlüsselwort 'dynamic' hilft überhaupt nicht. – Kjara

Antwort

1

Eine Möglichkeit, alle dynamischen Verwendungen im Code zu finden, besteht darin, die Microsoft.CSharp-Abhängigkeit temporär zu entfernen. Dies führt bei dynamischer Verwendung zu einem Compilerfehler. Vielleicht auch auf anderen Teilen, also sollten Sie es nach dem Entfernen der dynamischen Anrufe wieder einbeziehen.

Verwandte Themen