Ответ 1
По-видимому, проблема была в версии Visual Studio, которую я использовал. Если ты спросишь меня, подумай. После удаления Visual Studio Web Express 2012 и установки Visual Studio 2013 Ultimate все стало работать так, как должно.
Мой проект использует ASP.NET MVC4 в С# с Visual Studio 2012 для Web Express.
При компиляции моего проекта у меня есть следующая ошибка:
Поставщик не вернул экземпляр ProviderManifest. Не удалось определить версию хранилища; требуется правильное подключение к хранилищу или подсказка версии.
После многих часов поиска я считаю, что ошибка связана с Entity Framework. Я также нашел работу для этой ошибки здесь: http://forums.devart.com/viewtopic.php?f=32&t=25748
Обходной путь предполагает, что я изменяю поле ProviderManifestToken="2012"
на ProviderManifestToken="2008"
в моем файле .edmx
.
После этого ошибка исчезнет. Но тогда у меня возникает другая проблема, когда я запускаю проект, ошибка времени выполнения:
Не удалось загрузить файл или сборку "Microsoft.Data.Edm" или одну из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
=== Информация о состоянии предварительной привязки ===
LOG: DisplayName = Microsoft.Data.Edm
(Partial)
WRN: информация о частичной привязке была предоставлена для сборки:
WRN: Название сборки: Microsoft.Data.Edm | Идентификатор домена: 2
WRN: частичное связывание происходит, когда предоставляется только часть отображаемого имени сборки.
WRN: Это может привести к тому, что связующее загрузит неправильную сборку.
WRN: рекомендуется предоставить полностью определенный текстовый идентификатор для сборки,
WRN: состоит из простого имени, версии, культуры и токена открытого ключа.
WRN: см. Технический документ http://go.microsoft.com/fwlink/?LinkId=109270 для получения дополнительной информации и общих решений этой проблемы.
LOG: Appbase = file:///C:/Users/Pedro/Documents/Visual Studio 2012/Проекты/Dockis/Разработка/Dockis/Dockis/
LOG: Initial PrivatePath = C:\Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\bin
Вызов сборки: (Неизвестно).LOG: эта привязка запускается в контексте нагрузки по умолчанию.
LOG: Использование файла конфигурации приложения: C:\Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
LOG: Использование файла конфигурации хоста: C:\Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Использование файла конфигурации машины из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.LOG: политика не применяется к ссылке в это время (частное, пользовательское, частичное или привязку к базе данных).
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
LOG: Использование файла конфигурации приложения: C:\Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
LOG: Использование файла конфигурации хоста: C:\Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Использование файла конфигурации машины из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Перенаправление найдено в файле конфигурации приложения: 5.6.0.0 перенаправлено на 5.6.1.0.
LOG: Послеполитическая ссылка: Microsoft.Data.Edm, Version = 5.6.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm.DLL.
LOG: попытка загрузки нового файла URL:///C:/Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
WRN: сравнение названия сборки привело к несоответствию: номер сборки
ERR: Не удалось завершить настройку сборки (hr = 0x80131040). Исследование прекращено.
Трассировка стека:
[FileLoadException: Could not load file or assembly 'Microsoft.Data.Edm' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
[FileLoadException: Could not load file or assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
System.Reflection.Assembly.Load(String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
[ConfigurationErrorsException: Could not load file or assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521
[HttpException (0x80004005): Could not load file or assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9950728
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
Dockis - это название проекта. Увидев эту ошибку, я провел несколько часов, полагая, что ошибки лежат где-то в версиях используемого пакета. Однако, похоже, это не так, поскольку большинство пакетов обновлены, и между ними, похоже, нет конфликтов.
Следовательно, я верю, что проблема заключается в версии EntityFramework, но я не в курсе, как это исправить.
Я все уши, если у вас есть предложения, я буду им благодарен.
По-видимому, проблема была в версии Visual Studio, которую я использовал. Если ты спросишь меня, подумай. После удаления Visual Studio Web Express 2012 и установки Visual Studio 2013 Ultimate все стало работать так, как должно.
Загрузите http://www.microsoft.com/en-us/download/details.aspx?id=40762 и обновите Nuget EF до 6.1.3, и все будет работать нормально.
Это происходит потому, что VS2012 не поддерживает sql 2012 и выше. Измените значение ProviderManifestToken на 2008 год
Это работало для меня без изменения ProviderManifestToken = "2012" до 2008 в файле .edmx.
в .edmx файле, я изменил следующее значение с True на False.
<edmx:DesignerProperty Name="UseLegacyProvider" Value="False" />
"Поставщик не вернул экземпляр ProviderManifest". ошибка исчезла.
Не уверен, что это проблема с Visual Studio. Или просто структура сущностей, которая неспособна правильно распознать провайдера.
Я избавился от ошибки, отредактировав файл edmx и заменив 2012
на 2008
в <Schema ProviderManifestToken="2008" ...>
Замена 2012 с 2008 в ProviderManifestToken="2012"
в .edmx файле работала для меня.
ProviderManifestToken="2012"
открыть файл EDMX с помощью блокнота и изменить ProviderManifestToken = "2012" для ProviderManifestToken = "2008". спасти это
создайте свое решение
Для меня это было потому, что, когда я использовал TeamCity для деинсталляции моего сайта, он изменил файл web.config.
Он удалил connectionString и добавил debug = true в компиляцию System.Web
<system.web>
<customErrors mode="Off" />
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>
Я manuel исправил файл web.config, и теперь он снова работает для меня.