c # - Hvordan kan jeg indstille forsamlingsvejen efter indledning af CLR?

Indlæg af Hanne Mølgaard Plasc

Problem



Er der en måde (en API-funktion) til at indstille C # -samlingenes opkaldsvej efter start af CLR-vært, så at funktionen ExecuteInDefaultAppDomain () finder det? [3]


tak på forhånd.

Bedste reference


Du kan gøre noget som dette. I grunden bliver AssemblyResolve hændelsen kaldet hver gang stien til en samling ikke kan findes. Derefter har du mulighed for manuelt at indlæse denne samling.


AppDomain.CurrentDomain.AssemblyResolve += 
  new ResolveEventHandler(CurrentDomain\_AssemblyResolve);

private System.Reflection.Assembly CurrentDomain\_AssemblyResolve(object sender,
  ResolveEventArgs args)
    {
      string name = args.Name;
      //You can return null if you don't know how to load this assembly
      return Assembly.LoadFrom(SomeFunction(name));
    }

Andre referencer 1


Synes, at der kun er to måder at specificere en samlings placeringer på. [4]


Desværre arbejder ingen af ​​dem for denne sag. Derved er det nødvendigt at lokalisere filen manuelt og have den fulde sti til funktionen ExecuteInDefaultAppDomain () ved at have de mulige lister over samlingens kataloger og samlingens navn.


Jeg forstår dog stadig ikke, hvorfor sådan kapacitet ikke findes i CLR api (eller måske er den, men ikke korrekt dokumenteret).