Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/www/users/octoat/subdomains/devlog/wp-content/themes/suffusion/functions/media.php on line 666

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/www/users/octoat/subdomains/devlog/wp-content/themes/suffusion/functions/media.php on line 671

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/www/users/octoat/subdomains/devlog/wp-content/themes/suffusion/functions/media.php on line 684

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/www/users/octoat/subdomains/devlog/wp-content/themes/suffusion/functions/media.php on line 689

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/www/users/octoat/subdomains/devlog/wp-content/themes/suffusion/functions/media.php on line 694
Strong Name | Octoate's Devlog
Jan 182017
 

Vor einiger Zeit stand ich vor dem Problem, dass ich in einer Assembly feststellen musste, wo ich denn jetzt eigentlich laufe, um davon dann meine Weiterverarbeitung innerhalb der Assembly abhängig zu machen. Das hört sich erst einmal komisch an, lag aber daran, dass ich hier eine komplett autarke Komponente nicht wieder von anderen Assemblies abhängig machen wollte. In diesem Fall gab es dann auch gleich mehrere Möglichkeiten:

  • innerhalb einer von mir geschriebenen Anwendung
  • innerhalb einer von einem mir unbekannten Entwickler geschriebenen Anwendung (z.B. Konsole oder Desktop)
  • innerhalb des Unittest Runners

Die von mir geschriebene Anwendung besitzt natürlich einen Strong Name und zwar genau wie meine unabhängige Assembly. D.h. also, dass ich einfach den Public Key des aufrufenden Prozesses (eigene Anwendung, unbekannte Anwendung, Unittest Runner) mit dem Public Key meiner Assembly vergleichen kann und damit ganz einfach dieses Problem lösen konnte. Über Reflection kommt man auch relativ einfach an die entsprechenden Informationen, die man dafür braucht, heran.
Die folgende Methode ist dabei entstanden und liefert true zurück, wenn der Code der Assembly innerhalb einer von mir signierten Anwendung (Prozess) läuft. In allen anderen Fällen wird ein false zurückgeliefert.

Ist eigentlich ganz einfach und funktioniert bei mir ohne Probleme. Den entsprechenden Unittest erspare ich euch hier an dieser Stelle aber einfach einmal. Solltet ihr dennoch daran Interesse haben, dann einfach einen Kommentar hinterlassen und ich trage ihn noch schnell nach :-).

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen