web-dev-qa-db-fra.com

La version 10 ou supérieure de l'assembly «Microsoft.SqlServer.Types» est introuvable

J'ai un problème. Je ne parviens pas à ajouter une migration à mon projet ASP.NET WebAPI 2. Je reçois une erreur:

"Les types et fonctions spatiales ne sont pas disponibles pour ce fournisseur car la version 10 ou supérieure de l'assembly 'Microsoft.SqlServer.Types' est introuvable."

Je sais qu'il y a plusieurs questions et réponses à ce sujet, comme:

Mais! Le problème est...

  • J'ai déjà installé Microsoft.SqlServer.Types.
  • J'ai déjà Global.asax configuré avec: SqlServerTypes.Utilities.LoadNativeAssemblies (Server.MapPath ("~/bin")) dans Application_Start.
  • La référence est définie sur local copy> true.
  • Les packages NuGet sont tous mis à jour.
  • J'essaie déjà de rétrograder et de mettre à niveau le package.

C'est l'erreur complète lorsque j'essaie d'exécuter par exemple Add-Migration v002 :

System.InvalidOperationException: les types et fonctions spatiales ne sont pas disponibles pour ce fournisseur car la version 10 ou supérieure de l'assembly "Microsoft.SqlServer.Types" est introuvable.
en System.Data.Entity.SqlServer.SqlTypesAssemblyLoader.GetSqlTypesAssembly () en System.Data.Entity.SqlServer.SqlSpatialServices.GeographyFromText (String wellKnownText) en System.Data.Entity.Spatial.DbextTKT ) en System.Data.Entity.Migrations.Model.ColumnModel.CreateDefaultValue ()
en System.Data.Entity.Migrations.Model.ColumnModel..ctor (PrimitiveTypeKind type, TypeUsage typeUsage) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.BuildColumnModel (EdmProperty TypeUsageTypeUtage , IDictionary2 annotations) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.BuildColumnModel(EdmProperty property, ModelMetadata modelMetadata, IDictionary 2 annotations)
en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer. <> c__DisplayClass2e3.b__2df (EdmProperty p) en System.Data.Entity.Utilities.IEnumerableExtensions.Each [T] (IEnumerable 1 ts, Action 1 action) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.BuildCreateTableOperation (EntitySet entitySet, ModelMetadata modelMetadata) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.b__194 (EntitySet.EnterelSenelableEnableSetelEnableSetSelect 2.MoveNext()
en System.Collections.Generic.List
1..ctor (IEnumerable 1 collection)
en System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff (source ModelMetadata, cible ModelMetadata, Lazy1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion) en System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy 1 modificationCommandTreeGenerator , MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion) en System.Data.Entity.Migrations.DbMigrator.Scaffold (String migrationName, String namespace, Boolean ignoreChanges) et System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold. e, Boolean ignoreChanges) en System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold (MigrationScaffolder scaffolder) en System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run () en System.AppDomain.DoCallain CrossAppDomainDelegate callBackDelegate) en System.AppDomain.DoCallBack (CrossAppDomainDelegate callBackDelegate)
en System.Data.Entity.Migrations.Design.ToolingFacade.Run (coureur BaseRunner) en System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold (String migrationName, String language, String rootNamespace, Boolean ignoreChanges) fr System.Data.Entity.Migrations.AddMigrationCommand.Execute (String name, Boolean force, Boolean ignoreChanges) en System.Data.Entity.Migrations.AddMigrationCommand. <> c__DisplayClass2. <. ctor> b__0 () fr System.Data.Entity .Migrations.MigrationsDomainCommand.Execute (commande Action)

23
Martín

Après de nombreuses recherches, je viens d'installer "Microsoft System CLR Types for SQL Server 2012" à partir de:

A fonctionné comme un charme!

56
Martín

Assurez-vous que vous ne manquez pas de redirection de liaison

  <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
10
R2D2

Cela a fonctionné pour moi.

Ajoutez ceci au web.config> system.webServer >> runtime >> assemblyBinding node

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
  </dependentAssembly>
2
David

le problème peut être "virtuel". Vous devez avoir SqlServerSpatial140.dll dans le dossier bin au moment où vous exécutez la commande add-migration. Copiez simplement le fichier .dll dans le bac à des fins de développement et remplacez manuellement la version (x86/x64) pendant le déploiement. Sql Server (2012+) a déjà l'assembly installé.

1
Alex Kudryashev