这可能不是问题的答案,因为无法找到有关如何创建站点包的信息。
但正如您在 cmets 中所要求的,这是我关于如何使用由打包过程创建的 .cmd 文件在站点级别安装的方法。
步骤 1
我在构建过程中使用 msbuild 创建了一个包。我刚刚在我们的正常构建中添加了一个额外的步骤,在部署目录中创建项目文件。
<Target Name="CreateDeploymentPackage">
<MSBuild Projects="$(CurrentProject).csproj" Targets="Package"
properties="Platform=$(Platform);
Configuration=$(Configuration);
DeployOnBuild=false;
DeployTarget=Package;
PublishProfile=$(Environment);
PackageLocation=$(DeployDirectory)\_PublishedWebsites\DeployPackage\$(CurrentProject).zip;
PackageAsSingleFile=true;
_PackageTempDir=$(PackageOutputDir)\temp;">
</MSBuild>
</Target>
我确实设置了一个特定的 PublishProfile,以便能够为我在构建时所知道的所有内容传递 Web.config 转换。
第二步
我在我的项目中创建了一个Parameters.xml,以便能够更改包安装时间的参数。
<?xml version="1.0" encoding="utf-8" ?>
<parameters>
<parameter name="Log4net to email"
description="Please provide the email address for Log4net."
defaultValue="itsupport@ourcompany.com"
tags="">
<parameterEntry kind="XmlFile" scope="\\web.config$" match="//log4net/appender[@name='SmtpAppender']/to/@value" />
</parameter>
<parameter name="Webservice address"
description="Please provide the endpoint address for the document web service"
defaultValue="http://test.services.ourcompany.com/Service.svc"
tags="">
<parameterEntry kind="XmlFile" scope="\\web.config$" match="//system.serviceModel/client/endpoint/@address" />
</parameter>
<parameter name="Elmah error email subject"
description="Please provide the elmah errormail subject"
defaultValue="Our Portal (Production) | An unexpected error occurred"
tags="">
<parameterEntry kind="XmlFile" scope="\\web.config$" match="//elmah/errorMail/@subject" />
</parameter>
</parameters>
您可能会想为什么Parameters.xml 中没有站点名称和连接字符串。但是这些是在创建部署包时自动配置的,可以使用 SetParameters.xml 进行设置
在这里阅读:Why are some Web.config transforms tokenised into SetParameters.xml and others are not?
第三步
然后我为我们拥有的每个环境(prod、staging、test、dev)创建了一个 SetParameters-.xml。这是一个暂存的示例:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="staging-sitename.ourcompany.com" />
<setParameter name="Log4net to email" value="webdev@ourcompany.com" />
<setParameter name="Webservice address" value="http://staging.services.ourcompany.com/Service.svc" />
<setParameter name="Elmah error email subject" value="Our Portal (Staging) | An unexpected error occurred" />
<setParameter name="PortalEntities-Web.config Connection String" value="metadata=res://*/Src.Entity.PortalEntities.csdl|res://*/Src.Entity.PortalEntities.ssdl|res://*/Src.Entity.PortalEntities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=test.sql.ourcompany.com;Initial Catalog=Portal_Staging;User Id=<userid>;Password=<password>;Application Name ='OurPortal';Connection Timeout=180;MultipleActiveResultSets=True"" />
</parameters>
第四步
然后我使用以下命令在服务器上执行安装
Portal.Web.deploy.cmd /Y -setParamFile:"Portal.Web.SetParameters-STAGING.xml"
还有很大的改进空间,我想自动化更多,但这是我现在所拥有的。