web-dev-qa-db-fra.com

Fonction Azure, noyau EF, impossible de charger ComponentModel.Annotations 4.2.0.0

J'ai créé plusieurs bibliothèques .Net Standard 2.0, testé l'exécution via une application console ainsi que plusieurs tests: tout va bien.

Passez à la fonction Azure et obtenez l'erreur d'exécution suivante:  enter image description here

J'essaie ensuite de télécharger cette version spécifique dans le projet de fonction API:  enter image description here

J'utilise Visual Studio version 15.7.0 Preview 5.0. J'ai mis à jour la fonction Azure en version 4.7 ... en tant que projets de console et de test - et ceux-ci fonctionnent.

Cela fait trop d’heures .. j’espère que la résolution n’est pas folle. Ef Core 2.1.0-rc1-final est également dans le mix. Utilisation des annotations de données pour Required, MaxLength, NotMapped.

Erreur dans le graphique dit: Microsoft.EntityFrameworkCore: Impossible de charger le fichier ou l'assembly 'System.ComponentModel.Annotations, Version = 4.2.0.0

7
codeputer

Je vous suggère d’exécuter cette fonction ci-dessous une fois que vous avez démarré votre fonction Azure. Il redirigera toute Assemblée vers une version existante.

public class FunctionsAssemblyResolver
{
    public static void RedirectAssembly()
    {
        var list = AppDomain.CurrentDomain.GetAssemblies().OrderByDescending(a => a.FullName).Select(a => a.FullName).ToList();
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
    }

    private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        var requestedAssembly = new AssemblyName(args.Name);
        Assembly assembly = null;
        AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
        try
        {
            Assembly = Assembly.Load(requestedAssembly.Name);
        }
        catch (Exception ex)
        {
        }
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
        return Assembly;
    }

}
14
Igne B

J'ai suivi les instructions ici:

https://codopia.wordpress.com/2017/07/21/how-to-fix-the-Assembly-binding-redirect-problem-in-Azure-functions/

Et ajouté la redirection suivante:

"BindingRedirects": "[ { "ShortName": "System.ComponentModel.Annotations", "RedirectToVersion": "4.2.1.0", "PublicKeyToken": "b03f5f7f11d50a3a" } ]"

NOTE: Ce n'est pas v 4.5.0.0 ... C'est en fait 4.2.1.0. 

7
Roy Salisbury

J'ai eu le même problème et j'ai fini par rétrograder le package Microsoft.EntityFrameworkCore vers la version 2.0.3, laquelle dépend du système System.ComponentModel.Annotations 4.4.0, qui est le package que Microsoft.NET.Sdk.Functions 1.0.14 nécessite. Si vous avez une dépendance explicite sur System.ComponentModel.Annotations 4.5.0 ou une version ultérieure, vous devez également la rétrograder à la version 4.4.0.

1
Eugen Podaru

Ajouter la dernière référence ComponentModel à votre projet à l'aide de la commande nuget de la console de Package Manager va résoudre ce problème pour tous les types d'application (Console/Web/Azure).

Install-Package System.ComponentModel.Annotations -Version 4.5.0

Puisque ComponentModel n’a pas de version de 4.2.0.0, essayez d’installer la dernière version sur. Référence: -

Galerie Neget

0
mgsdew