Das ist besser, um den Assembly-Speicherort GetAssembly (). Location oder GetExecutingAssembly () zu erhalten

7

Bitte schlagen Sie vor, welches Programm am besten zur Ausführung des Montageortes geeignet ist.

%Vor%

oder

%Vor%

Bitte schlagen Sie vor, was besser sein kann. Kann ich GetEntryAssembly() auch verwenden?

    
Neeraj Dubey 21.11.2014, 10:59
quelle

2 Antworten

18

hängt davon ab, was Sie wollen .. Assembly.GetAssembly gibt die Assembly zurück wo type deklariert ist. Assembly.GetExecutingAssembly gibt die Assembly zurück, in der current code ausgeführt wird. und Assembly.GetEntryAssembly geben die process executable zurück, bedenke, dass es sich nicht um deine ausführbare Datei handelt. zB:

Stellen Sie sich vor, Ihr Code ist in myexecutable.exe und Sie haben dieses Szenario.

trdparty.exe - & gt; verwendet Assembly.LoadFile , um Ihre ausführbare Datei zu laden und Code durch Reflexion auszuführen

myexecutable.exe - & gt; verwendet den Typ MyClass

, aber die trdparty.exe patcht Ihren Code, um die neue Version von MyClass in Patch.dll

zu verwenden

Also jetzt .. Wenn Sie Ihre Anwendung selbst ausführen, erhalten Sie dieses Ergebnis

%Vor%

Aber wenn Sie das vorherige Szenario haben, erhalten Sie

%Vor%

als Antwort sollten Sie die verwenden, die das gewünschte Ergebnis liefert .. Die Antwort mag offensichtlich sein, dass es Assembly.GetExecutingAssembly() ist, aber manchmal nicht .. Stellen Sie sich vor, dass Sie versuchen, die Datei application.config zu laden, die mit der ausführbaren Datei verknüpft ist Pfad des "Prozesses"

wie gesagt, hängt von dem Szenario ab .. und dem Zweck ...

    
CaldasGSM 21.11.2014, 11:17
quelle
1

Es scheint ziemlich offensichtlich: Wenn Sie die ausführende Assembly wollen, verwenden Sie GetExecutingAssembly .

Manchmal haben Sie keinen, wenn Sie beispielsweise als Office-Add-In ausgeführt werden. Sie könnten stattdessen Assembly.GetAssembly verwenden.

    
Patrick Hofman 21.11.2014 11:10
quelle

Tags und Links