Question

Je suis presque sûr que la réponse est non mais juste au cas où:

Pour un exe autonome avec un manifeste SXS approprié, est-il possible de faire référence à des DLL en utilisant un chemin relatif ou de les charger à partir d'un répertoire qui n'est pas le répertoire actuel?

Nous opérons dans un environnement de grille qui déploie divers packages (c.-à-d. Fichiers zip) à l'aide d'un dossier commun comme racine. Plusieurs applications souhaitent faire référence à une API Common (avec des manifestes DLL) à partir d'un emplacement commun. Cependant, comme l'environnement de la grille est sableux, nous ne pouvons pas installer dans le répertoire Windows SXS et nous ne pouvons pas non plus le faire hors de la bande (c'est-à-dire non déployé par la grille).

Ai-je un espoir de dire charger com.dll de .. Somecommondir com.dll ou C: Program Files Somecommondir com.dll ?

Tout fonctionne bien comme un assemblage privé.

Était-ce utile?

La solution

Cela devrait être possible en utilisant des contextes d'activation. (Je suppose que vous êtes d'accord avec manifeste, etc. car il semble que vous puissiez le faire fonctionner correctement à la manière «standard» ...)

Il y a la façon «hardcore» de faire les choses ici, ou vous pouvez utiliser le Microsoft.Windows.ActCtx objet. Ceux-ci vous permettent tous les deux de définir manuellement / programme client se manifester pour le contexte d'activation; Le client manifeste Est-ce que doivent être dans le même dossier que le manifeste de l'assemblage et l'assemblage.

Cette question tellement peut vous être utile. Et voici un extrait d'une façon de le faire ...

// Create an activation context
Type actCtxType = System.Type.GetTypeFromProgID("Microsoft.Windows.ActCtx");
dynamic actCtx = System.Activator.CreateInstance(actCtxType);
actCtx.Manifest = @"Path\To\COMClient.manifest";

// Create the object you want, using the activation context
dynamic obj = actCtx.CreateObject("COMTestService.COMTestObject");

// Now use it!
var question = obj.GetQuestionFromAnswer(42);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top