Не удалось выполнить задачу веб-развертывания. (Инициализатор типа для Microsoft.Web.Deployment.DeploymentManager вызвал исключение.)

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

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


person coder    schedule 14.06.2011    source источник
comment
Вы недавно установили что-нибудь на свой компьютер?   -  person Jimmy    schedule 15.06.2011
comment
Нет, ничего. Но мой компьютер завис и перезагрузился, и я подозреваю, что именно тогда это началось.   -  person coder    schedule 15.06.2011
comment
Если ответ Виктора был вам полезен, не забудьте принять его как ответ.   -  person John-Philip    schedule 30.06.2015


Ответы (10)


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

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

(После очистки реестра не забудьте перезапустить Visual Studio)

Проблемный ключ реестра устанавливается с помощью SQL.

person Victor    schedule 31.05.2013
comment
Это сработало и для меня. Хотел бы я дать вам за это 1000 баллов. Я получал исключение для связанных наборов изменений и рабочего элемента для непрерывного развертывания Azure. Could not load file or assembly 'Microsoft.Data.Tools.Schema.Sql, Version=10.3.0.0 Я действительно задал вопрос об этом здесь: serverfault.com/questions/524848/ - person Gabe; 24.07.2013
comment
Точно! Спасибо @Victor. Интересно, что недавно я удалил все, что связано с SQL 2012. Но эти ключи реестра сохранились. - person Vertigo; 02.09.2013
comment
@Vertigo: Вчера я также удалил много вещей SQL Server 2012, потому что у меня установлен SQL Server 2014 ... не думал, что это может нарушить веб-развертывание. : D В моем случае я переустановил Web Deploy 3.5, а также удалил эти 2 ключа реестра. Перезапустил VS 2013, и теперь он снова работает. - person Leniel Maccaferri; 14.08.2014
comment
У меня был тот же сценарий, что и у Лениеля, проблема после удаления SQL Server 2012. Я удалил ключи, которые они перезапустили VS, и это сработало. Переустанавливать среду Wed Deploy не пришлось. - person CodeGrue; 04.09.2014
comment
Это исправленное приложение для импорта IIS для меня. Благодаря тонну!! - person Keith Hill; 08.02.2015
comment
Эти две папки реестра были пустыми на моем компьютере с Windows 8.1. : / - person krillgar; 10.02.2015
comment
Спасибо, это также устранило мою проблему. - person John-Philip; 30.06.2015
comment
Невероятный! Большое спасибо. - person Yet Another Code Maker; 03.08.2015
comment
Я не могу получить доступ к путям с моей машины W7. Кто-нибудь может помочь плз? - person ben; 10.09.2015
comment
Спасибо, возникла такая же проблема после установки sql server 2014. - person Gracie; 18.09.2015
comment
Он работает.Спасибо большое.Я перезапустил машину после regedit.Тогда только это сработало. - person Sampath; 14.06.2016
comment
Просто нажмите на эту же проблему - удаление этих ключей reg, а затем перезапуск сработали для меня. - person wysinawyg; 04.08.2016
comment
Это устранило мою проблему. Мне нужно было перезапустить Visual Studio после того, как я удалил эти ключи. Спасибо! - person johnnyRose; 13.04.2017

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

person Ryan    schedule 04.04.2014
comment
Это действительно хорошо сработало. Я также удалил SQL 2012 после установки 2014 года, когда он работал в последний раз. При поиске мне не удалось найти ни одного из этих ключей реестра. - person krillgar; 10.02.2015

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

person code5    schedule 13.11.2015
comment
На моей машине это на самом деле Microsoft Web Deploy dbSqlPackage Provider - person J Edward Ellis; 08.04.2016
comment
У меня тоже сработало, после того, как я потратил много часов на эту проблему - person R. Campos; 15.08.2019

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

person alexk    schedule 14.02.2014
comment
У меня уже дважды возникала эта проблема, и я искал ключи реестра, упомянутые Виктором, но их там не было. Оба раза перезапуск VS устранял проблему. - person Jonathan Sayce; 06.02.2016
comment
Это был простой, но очень важный ответ. Спасибо @alexk! - person user3590235; 25.12.2017

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

person sindrem    schedule 30.04.2015

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

всего 940 мб скачать. Кажется, я отремонтировал того, кого я вытащил из-за всех ручных деинсталляций на прошлой неделе.

en_sql_server_2012_express_edition_with_tools_with_sp1_x64.exe

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

person ScottCate    schedule 10.02.2013
comment
Я также вручную удалил некоторые вещи, связанные с SQL Server, и столкнулся с той же проблемой. Я запустил последовательность восстановления VS2012, и все вернулось в норму. - person AlexB; 19.09.2013

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

person Stephen__T    schedule 15.06.2011
comment
Да, я считаю, что вы можете запустить его локально и указать на нужный вам IIS. - person Stephen__T; 15.06.2011
comment
это не сработало. любые другие предложения? полная ошибка: C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets (3588,5): Ошибка: не удалось выполнить задачу веб-развертывания. (Инициализатор типа для Microsoft.Web.Deployment.DeploymentManager вызвал исключение.) - person coder; 16.06.2011
comment
Эта ошибка возникает еще до того, как он попытается подключиться к серверу веб-хостинга, потому что неверные учетные данные не имеют значения. Так что это должно быть что-то с моей стороны. - person coder; 16.06.2011

Кажется, у меня такая же проблема, но только при локальном запуске в 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, но на самом деле у меня есть эта DLL.

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

Мысли?

person Doug    schedule 29.10.2012
comment
Где-то есть зависимость от SQL. Мое веб-развертывание всегда работало нормально, и я только что удалил кучу SQL-файлов. Затем эта точная ошибка начала происходить. - person ScottCate; 10.02.2013
comment
Найдите решение от @Victor ниже. Я также удалил все, что связано с SQL 2012. Кажется, DAC внедряется в MSDeply. - person Vertigo; 02.09.2013

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

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

person Community    schedule 18.07.2014

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

person vidalsasoon    schedule 30.11.2015