Задачата за уеб внедряване е неуспешна. (Инициализаторът на типа за „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 точки за това. Получавах изключение за Associate Changesets и Workitem за Azure Continuous Deployments. 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... не мислех, че това може да наруши Web Deployment. :D В моя случай преинсталирах Web Deploy 3.5 и също изтрих тези 2 ключа в системния регистър. Рестартирах VS 2013 и сега отново работи. - person Leniel Maccaferri; 14.08.2014
comment
Имах същия сценарий като Leniel, проблем след деинсталиране на 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 mb изтегляне. Изглежда, че съм поправил всичко, което съм натрупал с всички ръчни деинсталирания миналата седмица.

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 в командния ред на визуалното студио.

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