Voici mon code:System.EnterpriseServices.Internal.Publish.GacInstall ne fonctionne pas, mais aucune erreur
var s = new System.EnterpriseServices.Internal.Publish();
foreach (string file in Directory.EnumerateFiles(@"C:\Program Files\MyFolder\MSPractices"))
{
Console.WriteLine("GACing " + file);
s.GacInstall(file);
}
Ce sont les fichiers que je suis en train de GAC (version 6.0.1304.0)
Microsoft.Practices.EnterpriseLibrary.Caching.dll Microsoft.Practices.EnterpriseLibrary.Common.dll Microsoft.Practices.EnterpriseLibrary.Data.dll Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll Microsoft.Practices.EnterpriseLibr ary.ExceptionHandling.Logging.dll Microsoft.Practices.EnterpriseLibrary.Logging.Database.dll Microsoft.Practices.EnterpriseLibrary.Logging.dll Microsoft.Practices.EnterpriseLibrary.PolicyInjection.dll Microsoft.Practices.EnterpriseLibrary.Security.dll Microsoft.Practices.EnterpriseLibrary.Validation.dll Microsoft.Practices.ServiceLocation.dll Microsoft.Practices.Unity.Configuration.dll Microsoft.Practices.Unity.dll Microsoft.Practices.Unity.Interception.Configuration.dll Microsoft. Practices.Unity.Interception.dll
Ils m'ont été donnés par quelqu'un d'autre, donc je ne sais pas où vous pouvez les trouver, mais ils sont certainement disponibles en ligne.
Le code génère correctement cette liste et ne lance aucune exception, mais l'exécution gacutil /l
révèle que seuls quelques-uns d'entre eux (mis en évidence ci-dessous) sont réellement installés.
Que peut-on ne va pas? POSSIBLEMENT IMPORTANT: Mon vrai problème est que cela ne fonctionne pas dans mon installateur InstallShield InstallScript avec un code similaire (en utilisant l'objet EnterpriseServices.Internal.Publish).
Cette méthode ne jette aucune exception! ...pour rien!
Publish pub = new Publish(); pub.GacInstall("foo");
Aucune erreur, aucune exception. Si le chemin est valide et que l'assembly est fortement nommé , il sera correctement installé dans le GAC. Fonctionne pour cible version .NET Frame de l'assembly. C'est à dire. une application .NET Framework 4.0 en utilisant GacInstall installera correctement un assemblage ciblé 3.5, etc.
Mise à jour (2011/12/13) - Après avoir utilisé ILSpy pour regarder le code pour cette fonction , je ne découvre que des erreurs sont envoyées à la machine locale Observateur d'événements:
Malheureusement, tous les événements dans l'observateur d'événements disent que
Installation dans le cache de l'assembly global a échoué: foo