2015-05-05 1 views
0

Я не могу исключить некоторые сборки в процессе установки.Как исключить сборки перед их регистрацией в Castle Windsor

Я стараюсь это:

public class InternationnalisationInstaller : IWindsorInstaller 
{ 
    public void Install(Castle.Windsor.IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store) 
    { 
     string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 
     var filter = new AssemblyFilter(path) 
       .FilterByAssembly(a => !a.IsDynamic 
        && !a.FullName.Contains("Microsoft")); 

     container.Register(Classes.FromAssemblyInDirectory(filter) 
      .BasedOn<ITraductionProvider>()    
      .WithService.AllInterfaces()); 
    } 
} 

в разработчика не проблема, но в производстве:

невыполнима де ле зарядное устройство Fichier НУ l'сборки «Microsoft.VisualStudio.Shell.Immutable.10.0, Версия = 10.0.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'ou une de ses dépendances. Le fichier spécifié est introuvable. à System.Reflection.RuntimeAssembly.GetExportedTypes (монтаж RuntimeAssembly, ObjectHandleOnStack retTypes) à System.Reflection.RuntimeAssembly.GetExportedTypes() à Castle.Core.Internal.ReflectionUtil.GetAvailableTypes (монтаж Монтаж, Boolean includeNonExported) à Castle.Core .Internal.ReflectionUtil.GetAvailableTypesOrdered (монтаж монтаж, Boolean includeNonExported) à Castle.MicroKernel.Registration.FromAssemblyDescriptor.b__0 (Актовый а) à System.Linq.Enumerable.d__14 2.MoveNext() à Castle.MicroKernel.Registration. FromDescriptor.Castle.MicroKernel.Registration.IRegistration.Register (ядро ядра IKernel) à Castle.MicroKernel.Registration.BasedOnDescriptor.Castle.MicroKernel.Registration.IRegistration.Register (IKerne lInternal ядро) à Castle.MicroKernel.DefaultKernel.Register (IRegistration [] регистраций) à Castle.Windsor.WindsorContainer.Register (IRegistration [] регистраций) à Internationnalisation.InternationnalisationInstaller.Install (IWindsorContainer контейнер, IConfigurationStore магазин)

Эта сборка используется для маркировки класса для регистрации VSIX. Вы можете мне помочь? Спасибо

+0

Если это необходимо, возможно, просто не исключайте его? – Jester

+0

Можете ли вы перевести сообщение об ошибке на английский? –

+0

Sriram: FileNotFoundException – Dekey

ответ

0

Вот пример из приложения, где я явно загружаю свои сборки для тестов интеграции. Вы можете добавить/отредактировать этот LINQ to Entiteis запрос по своему желанию. :

DirectoryInfo areasFolder = new DirectoryInfo(HostingEnvironment.MapPath(@"~\Areas")); 
FileInfo[] assemblyFiles = 
         areasFolder.EnumerateDirectories() 
          .SelectMany(d => d.EnumerateFiles("*.dll")) 
          .Where(f => f.Name.Contains("MyAppNamespace")) 
          .GroupBy(f => f.Name.Substring(0, f.Name.Length - f.Extension.Length)) 
          .Select(g => g.OrderByDescending(f => f.LastWriteTimeUtc).First()) 
          .ToArray();