我目前正试图让我的部署过程在我的生产服务器上运行并运行。目前我正在使用Web部署和发布配置文件来实现此目的,除了更新连接字符串以适应生产服务器之外,我已将所有内容正常工作。MSBuild Web部署不更新连接字符串
我使用:
创建发布包,以及:
call myProj.deploy.cmd /Y /M:http://myServer/MSDeployAgentService -allowUntrusted /U:user /:Password
所以这个工作,它包,然后将其发送到服务器的罚款,并配置IIS正确,但指向错误的数据库。
我的发布配置文件是这样的:直接从VS2012发布时,只需通过命令行不
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<MSDeployServiceURL>http://myserver</MSDeployServiceURL>
<DeployIisAppPath>Website</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
<UserName>user</UserName>
<_SavePWD>True</_SavePWD>
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="DBContext" Order="1" Enabled="False">
<Destination Path="Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password="password"" Name="" />
<Object Type="DbCodeFirst">
<Source Path="DBMigration" DbContext="myproj.Repositories.DBContext, myproj.Repositories" MigrationConfiguration="myproj.Repositories.Migrations.Configuration, myproj.Repositories" Origin="Configuration" />
</Object>
</ObjectGroup>
<ObjectGroup Name="DefaultConnection" Order="2" Enabled="False">
<Destination Path="Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password="password"" Name="" />
<Object Type="DbDacFx">
<PreSource Path="Data Source=localhost;Initial Catalog=devDB;User ID=user;Password="password"" includeData="False" />
<Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
</Object>
<UpdateFrom Type="Web.Config">
<Source MatchValue="Data Source=localhost;Initial Catalog=devDB;User Id=user;Password=password" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
</UpdateFrom>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
</PropertyGroup>
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)DBContext-Web.config Connection String">
<ParameterValue> Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password="password"</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String">
<ParameterValue>Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password="password"</ParameterValue>
</MSDeployParameterValue>
</ItemGroup>
</Project>
烦人能正常工作。我的msbuild调用中是否存在开关或选项?
它不能正常工作,因为在myProj.SetParameters.xml文件中显示的连接字符串是错误的。如果手动将它们更改为正确的连接字符串,则一旦部署,生产服务器上的web.xml文件就是正确的。如何将正确的字符串放入我的SetParameters文件中?任何帮助将不胜感激。
你确定你的第一个命令是生成一个包吗?您的发布配置文件具有“MSDeploy”的WebPublishMethod,而不是“Package”。 – 2013-02-14 04:22:39
它正在生成包。您可以使用MSDeploy进行部署,也可以使用我正在使用的方法 – Thewads 2013-02-14 08:30:46
替代方案可以对连接字符串替换使用web.config转换,并选择要在执行MSBuild时发布的配置。 – ThomasArdal 2013-02-14 10:16:56