首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建服务器级Web Deploy包

创建服务器级Web Deploy包
EN

Stack Overflow用户
提问于 2015-05-27 23:54:18
回答 2查看 292关注 0票数 2

在IIS服务器管理员手动为我创建站点后,我可以使用Web Deploy创建可以导入现有IIS站点的包。

是否可以使用Web Deploy创建可以作为站点而不是应用程序导入的包?

当我尝试导入我现有的包时,我得到了这个丑陋的错误。

EN

回答 2

Stack Overflow用户

发布于 2015-06-24 15:48:00

这可能不是问题的答案,因为无法找到有关如何创建站点包的信息。

但正如您在评论中所要求的,以下是我关于如何使用由包过程创建的.cmd文件在站点级别上安装的方法。

第一步

我使用msbuild在我们的构建过程中创建了一个包。我刚刚在我们的普通构建中添加了一个额外的步骤,在一个部署目录中创建项目文件。

代码语言:javascript
复制
<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,以便能够在安装包时更改参数。

代码语言:javascript
复制
<?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中没有站点名称和连接字符串。但这些是自动创建的,可在创建deploy包时进行配置,并且可以使用SetParameters.xml进行设置

点击此处阅读:Why are some Web.config transforms tokenised into SetParameters.xml and others are not?

第三步

然后,我为我们拥有的每个环境(prod、staging、test、dev)创建了SetParameters-.xml。下面是一个用于暂存的示例:

代码语言:javascript
复制
<?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=&quot;Data Source=test.sql.ourcompany.com;Initial Catalog=Portal_Staging;User Id=<userid>;Password=<password>;Application Name ='OurPortal';Connection Timeout=180;MultipleActiveResultSets=True&quot;" />
</parameters>

第四步

然后,我使用以下命令在服务器上执行安装

代码语言:javascript
复制
Portal.Web.deploy.cmd /Y -setParamFile:"Portal.Web.SetParameters-STAGING.xml"

还有很大的改进空间,我想要自动化更多,但这就是我现在拥有的。

票数 0
EN

Stack Overflow用户

发布于 2017-08-14 23:15:04

基本上,不是安装在站点的根目录,而是部署到站点内的文件夹!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30487457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档