2017-08-30 2 views
0

Je tente de migrer mon code d'un projet Webjobs fonctionnant sous .NET Framework 4.6.1 vers un nouveau projet de console .NET Core 2.0. Je reçois des erreurs quelques erreurs ici:Utilisation de Ninject dans l'application .NET Core Console

class Program 
{ 
    // Here I'm getting IKernel is obsolete. Use IKernelConfiguration and IReadOnlyKernel message. 
    // Also a message that reads: StandardKerynel is obsolete. Use StandardKernelConfiguration and StandardReadOnlyKernel 
    static readonly IKernel Kernel = new StandardKernel(); 
    static JobHostConfiguration config; 

    static void Main(string[] args) 
    { 
     Environment.SetEnvironmentVariable("AzureWebJobsDashboard", "connection"); 
     Environment.SetEnvironmentVariable("AzureWebJobsStorage", "storage connection"); 

     BootStrapIoc(); 

     config = new JobHostConfiguration(); 

     if (config.IsDevelopment) 
     { 
      config.UseDevelopmentSettings(); 
     } 

     var host = new JobHost(config); 
     host.RunAndBlock(); 
    } 

    private static void BootStrapIoc() 
    { 
     // Also getting an error here that reads: Argument 1: Cannot convert System.Reflection.Assembly to System.Collections.Generic.IEnumerable<Ninject.Modules.NinjectModule> 
     Kernel.Load(Assembly.GetExecutingAssembly()); 
     config = new JobHostConfiguration 
     { 
     JobActivator = new BrmJobActivator(Kernel) 
     }; 
    } 
} 

Je suis aussi obtenir des erreurs dans mon code BrmJobActivator:

public class BrmJobActivator : IJobActivator 
{ 
    private readonly IKernel _container; 

    public BrmJobActivator(IKernel container) 
    { 
     _container = container; 
    } 

    public T CreateInstance<T>() 
    { 
     return _container.Get<T>(); 
    } 
} 

MISE À JOUR: Voici le message d'avertissement en paquets NuGet dans mon projet après l'installation package ninject 3.2.2: enter image description here

Répondre

1

obtenir également une erreur ici qui lit: Argument 1: Impossible de convertir System.Reflection.Assembly à System.Co llections.Generic.IEnumerable

La dernière version préliminaire de Ninject a été modifiée. Veuillez installer la dernière version stable 3.2.2 à la place.

enter image description here

J'ai testé votre code de mon côté. Après avoir mis à jour la version Ninject à 3.2.2, le code a bien fonctionné.

+0

Nous vous remercions de votre réponse. J'ai installé la version 3.2.2 et cela semble fonctionner correctement. Cependant, je vois un avertissement sous les paquets NuGet. J'ai pris une capture d'écran et mis à jour le post original avec. Le message avertit que ce paquet peut ne pas être entièrement compatible avec mon projet. – Sam

+0

Juste pour clarifier davantage: le projet construit sans erreurs et je ne fais pas les erreurs que je recevais avant. – Sam

+0

Vous pouvez simplement l'ignorer ou modifier votre code pour utiliser la dernière version de NInject. Vous devez implémenter un Ninject.Modules.NinjectModule. Le lien ci-dessous est pour votre référence. https://github.com/ninject/Ninject/wiki/Modules-and-the-Kernel – Amor

0

Ninject 3.3.0 a été publié le 26 septembre 2017 et cible maintenant .NET Standard 2.0 et fonctionne également sur .NET Core 2.0. La mise à jour vers la version 3.3.0 corrigera l'avertissement.