DeeRain
DeeRain

Reputation: 1354

MsBuild and MsDeploy problems

When I publish web project by gui(VS2010) (right click in project and choose Publish menu item, publish Method - Web Deploy) - everything works fine.

Problems appear when I am trying to publish via command line: MSBUILD or MsDeploy.

With MSBuild a package is created with no publishing (only creating package):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSbuild.exe" Project.sln /p:DeployOnBuild=true /p:DeployTraget=MSDeployPublish /p:MSDeployPublishMethod=WMSVC /p:MSDeployServiceUrl=https://[ip]/msdeploy.axd /p:AllowUntrustedCertificate=true  /p:DeployIisAppPath=NlbTestSite /p:UserName=M\DeployUser /p:Password=qwerty

With MsDeploy i get an error: ERROR_USER_UNAUTHORIZED

E:\Work\OutDir\MSDeploy\Package.deploy.cmd" /Y /M:"https://[ip]:8172/msdeploy.axd" /U:"M\DeployUser" /P:"qwerty" -allowUntrusted /A:Basic

My goal is to automate the deployment process using one of those methods.

I want to find out how Visual Studio publishes my project (what command with what arguments)?

UPDATE 19.10.2012 14:52

When I add /p:UseMsDeployExe=true, msdeploy.exe is executed, but nothing is copied.

The execution command:

C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe -source:manifest='E:\[Path]\obj\Debug\Package\[Project].SourceManifest.xml' -dest:package='E:\[Path]\[Project]\obj\Debug\Package\[Project].zip',IncludeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -declareParam:name='IIS Web Application Name',kind='ProviderPath',scope='IisApp',match='^E:\\[Path]\\obj\\Debug\\Package\\PackageTmp$',defaultvalue='[SiteName]',tags='IisApp' -declareParam:name='IIS Web Application Name',kind='ProviderPath',scope='setAcl',match='^E:\\[Path]\\obj\\Debug\\Package\\PackageTmp$' -declareParam:name='Add write permission to App_Data Folder',kind='ProviderPath',scope='setAcl',match='^E:\\[Path]\\obj\\Debug\\Package\\PackageTmp\\App_Data$',description='Add write permission to App_Data folder',defaultvalue='{IIS Web Application Name}/App_Data',tags='Hidden' -declareParam:name='MainModelContainer-Web.config Connection String',kind='XmlFile',scope='E:\\[Path]\\OutDir\\temp\\Web\.config$',match="/configuration/connectionStrings/add[@name='MainModelContainer']/@connectionString",description='MainModelContainer Connection String used in web.config by the application to access the database.',defaultvalue='metadata=[ConnectionString]"',tags='SqlConnectionString' -declareParam:name='SimpleConnection-Web.config Connection String',kind='XmlFile',scope='E:\\[Path]\\OutDir\\temp\\Web\.config$',match="/configuration/connectionStrings/add[@name='SimpleConnection']/@connectionString",description='SimpleConnection Connection String used in web.config by the application to access the database.',defaultvalue='[ConnectionString]',tags='SqlConnectionString' -declareParam:name='ElmahDB-Web.config Connection String',kind='XmlFile',scope='E:\\[Path]\\OutDir\\temp\\Web\.config$',match="/configuration/connectionStrings/add[@name='ElmahDB']/@connectionString",description='ElmahDB Connection String used in web.config by the application to access the database.',defaultvalue='[ConnectionString]',tags='SqlConnectionString' -retryAttempts=2 

No parameters, such as ComputerName, User or password are passed. Any ideas about the cause?

Upvotes: 3

Views: 3303

Answers (2)

Richard Szalay
Richard Szalay

Reputation: 84824

In your pubxml file, declare the following:

<PropertyGroup>
    <UseMsDeployExe>true</UseMsDeployExe>
</PropertyGroup>

Now when you deploy, you should see the call to msdeploy.exe in the publih log.

Make note, though, that it will actually be calling msdeploy.exe directly, and not via the generated deploy.cmd file.

Upvotes: 1

DeeRain
DeeRain

Reputation: 1354

Problem solved. Got some ideas from http://root-project.org/work/net/automated-web-deployment-with-msbuild-and-msdeploy

I separated msbuild and msdeploy, and executed msdeploy explicitly. Here is the template:

msdeploy.exe
-source:package=’C:\SomeWebProject\obj\Release\Package\SomeWebProject.zip‘
-dest:auto,ComputerName=’https://TargetServer:8172/MsDeploy.axd?site=TargetWebSite‘,UserName=’Username‘,Password=’Password‘,IncludeAcls=’False’,AuthType=’Basic’
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-allowUntrusted
-retryAttempts=2
-setParam:’IIS Web Application Name’=’TargetWebSite/TargetWebApp‘

But problem with msbuild still remains.

Upvotes: 2

Related Questions