Ошибка веб-развертывания. (Инициализатор типа для «Microsoft.Web.Deployment.DeploymentManager» вызвал исключение.) - PullRequest
56 голосов
/ 15 июня 2011

Я получаю следующую ошибку при использовании веб-развертывания из Visual Studio 2010. Ошибка веб-развертывания.(Инициализатор типа «Microsoft.Web.Deployment.DeploymentManager» вызвал исключение.)

Я неожиданно начал получать эту ошибку!Я много раз публиковал свой веб-сайт с теми же настройками, но вдруг он стал давать мне эту ошибку.Может ли это быть что-то в свойствах сайта?Я использую asp.net и имею Windows 7 и публикую на Windows Server R2.Пожалуйста, помогите!

Ответы [ 10 ]

107 голосов
/ 31 мая 2013

Хорошо, я столкнулся с этой проблемой, и ни один из этих ответов не помог мне. Я свел его к одной строке кода, а именно:

var deploymentOptions = new Microsoft.Web.Deployment.DeploymentBaseOptions();

Если вы не передадите это вручную в DeploymentManager, он будет внутренне создавать экземпляр этого объекта. Еще более интересным было то, что этот код будет работать для меня как единственная строка консольного приложения, в то время как он потерпит неудачу, если я положу его в модульный тест (запускается с помощью vstest).

Вот полное тело исключения:

System.TypeInitializationException occurred
  HResult=-2146233036
  Message=The type initializer for 'Microsoft.Web.Deployment.DeploymentManager' threw an exception.
  Source=Microsoft.Web.Deployment
  TypeName=Microsoft.Web.Deployment.DeploymentManager
  StackTrace:
       at Microsoft.Web.Deployment.DeploymentManager.GetLinkExtensions()
       at Microsoft.Web.Deployment.DeploymentBaseOptions..ctor()
       at SimpleTest.Test.UnitTest1.TestMethod1() in f:\Source\Projects\SimpleTest.Test\UnitTest1.cs:line 12
  InnerException: System.TypeInitializationException
       HResult=-2146233036
       Message=The type initializer for 'Microsoft.Web.Deployment.BuiltInTypesCache' threw an exception.
       Source=Microsoft.Web.Deployment
       TypeName=Microsoft.Web.Deployment.BuiltInTypesCache
       StackTrace:
            at Microsoft.Web.Deployment.BuiltInTypesCache.get_Factories()
            at Microsoft.Web.Deployment.DeploymentProviderFactoryCollection.LoadFromRegistry()
            at Microsoft.Web.Deployment.DeploymentProviderFactoryCollection..ctor()
            at Microsoft.Web.Deployment.DeploymentManager.LoadDeploymentManagerSettings()
            at Microsoft.Web.Deployment.DeploymentManager..cctor()
       InnerException: Microsoft.Web.Deployment.DeploymentException
            HResult=-2146233088
            Message=The provider 'Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderFactory' could not be loaded.
            Source=Microsoft.Web.Deployment
            StackTrace:
                 at Microsoft.Web.Deployment.DeploymentProviderFactory.Create(Type type)
                 at Microsoft.Web.Deployment.BuiltInTypesCache.InspectTypesForWebDeployAttributes(IEnumerable`1 types, String dllName)
                 at Microsoft.Web.Deployment.BuiltInTypesCache..cctor()
            InnerException: Microsoft.Web.Deployment.DeploymentException
                 HResult=-2146233088
                 Message=The type 'Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderFactory' could not be loaded. The configuration settings may not be valid.
                 Source=Microsoft.Web.Deployment
                 StackTrace:
                      at Microsoft.Web.Deployment.ReflectionHelper.CreateInstance[T](Type type, Object[] constructorArguments)
                      at Microsoft.Web.Deployment.DeploymentProviderFactory.Create(Type type)
                 InnerException: System.TypeInitializationException
                      HResult=-2146233036
                      Message=The type initializer for 'Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderBaseProviderFactory' threw an exception.
                      Source=mscorlib
                      TypeName=Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderBaseProviderFactory
                      StackTrace:
                           at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
                           at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
                           at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
                           at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
                           at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
                           at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
                           at System.Activator.CreateInstance(Type type, Boolean nonPublic)
                           at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
                           at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
                           at System.Activator.CreateInstance(Type type, Object[] args)
                           at Microsoft.Web.Deployment.ReflectionHelper.CreateInstance[T](Type type, Object[] constructorArguments)
                      InnerException: System.IO.FileNotFoundException
                           HResult=-2147024894
                           Message=Could not load file or assembly 'Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
                           Source=Microsoft.Data.Tools.Schema.DbSqlPackage
                           FileName=Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
                           FusionLog=""
                           StackTrace:
                                at Microsoft.Data.Tools.Schema.MsDeploy.MsDeployProviderBaseProviderFactory..cctor()
                           InnerException:

Поговорив с командой в Microsoft, которой принадлежит этот компонент, я узнал простое решение:

Найдите ключ в реестре по следующим путям, который указывает на проблемную сборку, и удалите его:

HKLM\Software\Microsoft\IIS Extensions\msdeploy\3\extensibility
HKLM\Software\Wow6432Node\Microsoft\IIS Extensions\msdeploy\3\extensibility

Проблемный раздел реестра установлен SQL.

18 голосов
/ 04 апреля 2014

У меня была такая же проблема, но установка SQL 2012 и изменение реестра не устранили ее.После переустановки Web Deploy 3.5 на моей машине для разработки все выправилось.

17 голосов
/ 13 ноября 2015

Просто удалите провайдера Microsoft dbsqlpackage.Перейдите в раздел «Программы и компоненты».Больше не используется.

5 голосов
/ 14 февраля 2014

Для меня я перезапустил Visual Studio и перестроил проект, и я смог опубликовать снова (я не видел этот предложенный ответ, и он работал для меня). Может быть, это ваш первый шаг, прежде чем пытаться найти другие ответы на этот вопрос.

3 голосов
/ 30 апреля 2015

Я переустановил Web Deployment 3.5, чтобы он работал на Windows 8.1. Не удалось найти файлы в реестре.

2 голосов
/ 10 февраля 2013

Мне удалось устранить эту ошибку, переустановив SQL Server.Я переустановил SQL 2012 Express из MSDN с этим именем файла.

загрузка всего 940 МБ.Кажется, я восстановил whatevrer, который я отключил при всех удалениях вручную на прошлой неделе.

en_sql_server_2012_express_edition_with_tools_with_sp1_x64.exe

Надеюсь, это поможет.

1 голос
/ 30 ноября 2015

Выполнение «ремонта» установки SQL Server устранило проблему для меня.

1 голос
/ 18 июля 2014

У меня уже была SSMS 2014, и это, похоже, не вызывало проблем с публикацией в VS. Эта проблема возникла у меня позже после установки ядра базы данных SQL Server 2014.

Записи реестра, на которые ссылался Виктор, были пустыми. Переустановка VS2012 устранила проблему.

1 голос
/ 29 октября 2012

Кажется, у меня та же проблема, но только при локальном запуске в IIS Express (мой экземпляр IIS 8 прекрасно выполняет этот код).

Когда я отслеживаю исключение в стеке (три внутренних исключения),Похоже, что фактическое исключение следующее:

Could not load file or assembly 'Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.":"Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Странная вещь в этом состоит в том, что эта DLL, кажется, находится в @ C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.Data.Tools.Utilities.dll, но у меня фактически эта библиотека сидит там.

Также странно, что это происходит только всякий раз, когда я пытаюсь инициализировать новый DeploymentBaseOptions.Прежде чем что-то делать с ним (поэтому я не делаю никаких вызовов SQL и даже не задавал для него никаких свойств.

Мысли?

1 голос
/ 15 июня 2011

Может быть, вам нужно запустить aspnet_regiis в командной строке Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...