Toon posts:

[.NET] Strong naming

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben momenteel bezig met een VB.NET applicatie. Volgens de policy binnen dit bedrijf moeten alle applicaties voorzien worden van een .snk keyfile.

Nu is dit principe hier al voor meerdere applicaties toegepast. Echter stuitte ik vandaag op een opmerkelijk probleem:

Wanneer de applicatie strong named is, wordt er afgedwongen dat alle references binnen het project ook strong named zijn. Zo niet, dan krijg ik van de linker een error. Nu zijn er hier in voorgaande projecten al applicaties gebouwd, welke strong named zijn, maar een verwijzing hebben naar 3rd party dlls die niet strong named zijn. Hoe kan dit? En hoe kan ik dit binnen mijn eigen project mogelijk maken?

Verwijderd

Volgens mij zou dat niet mogelijk moeten zijn.
Als work-around zou je de assembly dynamisch (Assembly.Load) kunnen laden en vervolgens de classes daarin m.b.v. reflection gebruiken.

[ Voor 5% gewijzigd door Verwijderd op 07-04-2006 16:06 ]


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Verwijderd schreef op vrijdag 07 april 2006 @ 16:06:
Volgens mij zou dat niet mogelijk moeten zijn.
Als work-around zou je de assembly dynamisch (Assembly.Load) kunnen laden en vervolgens de classes daarin m.b.v. reflection gebruiken.
a rato van +- 32 extra operaties per invoke opdracht is dat niet echt lekker.

mogelijkheden die ik op het eerste moment zie:
- delay-signen van de assembly (als dit mogelijk is)
- de auteurs vragen om ook een strong-signed assembly uit te brengen (voor hen zou dit ook een kleintje moeten zijn)

in het ergste geval: discompilen, signen, recompilen. is niet zo netjes maar als dat je laatste oplossing is...

eventueel ook eens opzoeken of dat gedrag uitgezet kan worden.

ASSUME makes an ASS out of U and ME


Verwijderd

HIGHGuY schreef op vrijdag 07 april 2006 @ 17:09:
[...]


a rato van +- 32 extra operaties per invoke opdracht is dat niet echt lekker.
is ook zo.
mogelijkheden die ik op het eerste moment zie:
- delay-signen van de assembly (als dit mogelijk is)
- de auteurs vragen om ook een strong-signed assembly uit te brengen (voor hen zou dit ook een kleintje moeten zijn)

in het ergste geval: discompilen, signen, recompilen. is niet zo netjes maar als dat je laatste oplossing is...

eventueel ook eens opzoeken of dat gedrag uitgezet kan worden.
De auteurs vragen om ook een strong-named assembly uit te brengen zou veruit de beste oplossing te zijn.
Ik vraag me af of delay-signing helpt of het probleem alleen maar naar achter verschuift.

Decompilen wordt moeilijk als er sommige vormen van obfuscatie gebruikt zijn, maar iemand die zijn assembly niet signed zal ook wel niet de moeite nemen om hem te obfusceren.

Verwijderd

Topicstarter
De libraries waar het om gaat zijn van de Enterprise library. Ik heb deze nu inmiddels voorzien van een strong name, en nu werkt mijn projectje wel.

Feit is, dat er hier nog andere applicaties rondspoken waarbij een versie van de Enterprise Library is gebruikt die niet voorzien is van een Strong Name. De mogelijkheden die jullie geven zijn daar naar mijn weten ook niet op toegepast. Het blijft voor mij dus een raadsel hoe deze applicaties wel compileren :?

Verder zal ik eens wat gaan lezen over de mogelijkheden om assemblies te 'delay-signen'. Bedankt voor de tip!