Toon posts:

[.NET GAC]Altijd de nieuwste dll versie gebruiken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

In het GAC kan je instellen dat de programma's die zoeken naar een een verouderde dll doorgelinkt worden naar een nieuwere versie. Deze nieuwe versie moet je hard opgeven. Kan je het op één of andere manier ook zo opzetten dat hij er altijd doorgelinkt wordt naar de nieuwte versie?

Alvast bedankt

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Ja, je zult een Publisher policy file moeten creeëren.
Op basis van die file maak je dan een publisher policy assembly die je in de GAC installeert.

De publisher policy file specifieert welke versie van een bepaalde assembly er altijd moet gebruikt worden.

(Had ik je dat trouwens al niet eens gezegd. :? :P )

Ja dus. Hier:
[rml][ .Net] Shared assemblies versioning probleem*[/rml]

[ Voor 21% gewijzigd door whoami op 07-11-2003 15:14 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja maar daar gaat het niet helemaal om. Ik wil eigenlijk niet steeds die publisher file aanpassen wanneer er een nieuwe dll versie is. Kan je ook iets opgeven waardoor hij zelf kijkt wat de laatste versie in het GAC is en dat hij die dan gebruikt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Als je gebruikt maakt van server-activated remoted objects, dan zal de server altijd de laatste versie van het object gebruiken.
De vraag is maar of je gebruik wilt maken van remoting.

Ik geloof niet dat het mogelijk is om zonder publisher policy altijd impliciet de laatste versie te gebruiken. Dit zou er nl. nogal eens voor incompatibiliteitsproblemen kunnen zorgen.
Stel dat jouw applicatie A gebruik maakt van versie 1 van een of andere dll.
Later maak je versie 2 van die dll die niet meer backwards compatible is met versie 1. Als de laatste versie van die dll dan altijd zou gebruikt worden, dan zou Applicatie A crashen.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Waarom staat de assembly uberhaupt in de gac? MS adviseert dat alleen in uiterste gevallen te doen.

Verder kun je je eigen version numbering gebruiken, waardoor je niet voor elke recompile een nieuw versienummer krijgt. Bv een patch in een routine kan gewoon dezelfde signature houden dan en je hoeft dan niets te doen.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
EfBe schreef op 07 november 2003 @ 15:43:
Waarom staat de assembly uberhaupt in de gac? MS adviseert dat alleen in uiterste gevallen te doen.
Als je meerdere applicaties hebt, die dezelfde DLL gebruiken, dan kan je die toch eventueel in de GAC opnemen?
Verder kun je je eigen version numbering gebruiken, waardoor je niet voor elke recompile een nieuw versienummer krijgt. Bv een patch in een routine kan gewoon dezelfde signature houden dan en je hoeft dan niets te doen.
Of gewoon je versie-nr zelf specifieren mbhv het AssemblyVersion attribute.

Dit:
code:
1
[assembly: AssemblyVersion("1.0.*")]

vervangen door dit bv:
code:
1
[assembly: AssemblyVersion("1.0.0.0")]

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
whoami schreef op 07 november 2003 @ 15:53:
Als je meerdere applicaties hebt, die dezelfde DLL gebruiken, dan kan je die toch eventueel in de GAC opnemen?
Dat kan, maar dat is veelal niet te prefereren. Het punt is nl. dat je dan DLL hell krijgt/kunt krijgen, ook met policy files. Het beste is dll's die je nodig hebt voor een app gewoon bij de app te plaatsen.
Of gewoon je versie-nr zelf specifieren mbhv het AssemblyVersion attribute.
dat bedoelde ik :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
EfBe schreef op 07 november 2003 @ 17:02:
[...]
Dat kan, maar dat is veelal niet te prefereren. Het punt is nl. dat je dan DLL hell krijgt/kunt krijgen, ook met policy files. Het beste is dll's die je nodig hebt voor een app gewoon bij de app te plaatsen.
Als je meerdere apps hebt die altijd de nieuwste versie moeten gebruiken moet je bijna wel. Het is ook niet handig als je telkens al je applicaties langs moet om de dll te gaan vervangen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
rwb schreef op 07 november 2003 @ 17:06:
[...]


Als je meerdere apps hebt die altijd de nieuwste versie moeten gebruiken moet je bijna wel. Het is ook niet handig als je telkens al je applicaties langs moet om de dll te gaan vervangen.
De vraag is of je dat wel wilt. EfBe haalde de term 'Dll hell' al aan, en eigenlijk heeft hij gelijk.

Stel dat de reeds bestaande applicaties versie 1 gebruiken van de DLL, en jij released versie 2 die niet backwards compatible is en dat die DLL dan automatisch door alle applicaties gebruikt wordt, dan kan ik me goed voorstellen dat de reeds bestaande applicaties die met versie 1 perfect werken, helemaal niet blij worden met versie 2.
(En jij trouwens ook niet. :P )

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
whoami schreef op 07 november 2003 @ 19:32:
[...]


De vraag is of je dat wel wilt. EfBe haalde de term 'Dll hell' al aan, en eigenlijk heeft hij gelijk.

Stel dat de reeds bestaande applicaties versie 1 gebruiken van de DLL, en jij released versie 2 die niet backwards compatible is en dat die DLL dan automatisch door alle applicaties gebruikt wordt, dan kan ik me goed voorstellen dat de reeds bestaande applicaties die met versie 1 perfect werken, helemaal niet blij worden met versie 2.
(En jij trouwens ook niet. :P )
Daar heb je inderdaad gelijk in. Maar ik kan me ook voorstellen dat je een framework hebt die gebruikt wordt in het grootste deel van je applicaties en dan blijkt er opeens een klein bugje in te zitten wat je server vast kan laten lopen. Dan wil je op een simpelen manier kunnen zorgen dat alle applicaties de nieuwe dll gebruiken. Er is dan namelijk niks aan je specificaties veranderd maar er is wel een bugje uit. Met dit soort dingen moet je natuurlijk wel altijd oppassen want op een gegeven moment denkt er weer iemand dat hij wel een kleine verandering door kan voeren maar die dan toch wat grotere gevolgen blijkt te hebben op een applicatie.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • EfBe
  • Registratie: Januari 2000
  • Niet online
rwb: dat is inderdaad de keuze tussen de 2 kwaden die je hebt: kies je voor de 1-versie versie (GAC) dan loop je het risico dat je applicaties breekt door een upgrade, kies je voor de 'per app-versie', dan moet je veel deployen....

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1