手动部署VSTS内置的Web包

时间:2017-08-25 05:40:31

标签: asp.net web-deployment

我们已经使用本地版本移植到天蓝色的VSTS。

我有一个asp.net mvc Web应用程序,我创建了一个构建版本,使用以下参数创建Web部署包

/p:DeployOnBuild=true 
/p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true  
/p:AutoParameterizationWebConfigConnectionStrings=False

然后我们发布了部署到不同环境的版本,例如DEV,QAL和TST。很好地工作web.config中的所有参数都根据parameters.xml文件进行修改。

现在出现问题,我们不会自动发布到生产中。因此,我将带有setparameters.xml文件的Web部署包修改为满足所需的配置和其他文件,并手动导入到我们的IIS站点。它完成但有这些类型的错误

25/08/2017 2:58:50 PM] Parameter entry 'wordAutomation_EndPoint/1' is applicable to 'C:\agent2\_work\6\s\Main\Clients\Web\WebUI\obj\Release\Package\PackageTmp\Web.config' because of its scope.
[25/08/2017 2:58:50 PM] Parameter entry 'wordAutomation_EndPoint/1' could not be applied to 'C:\agent2\_work\6\s\Main\Clients\Web\WebUI\obj\Release\Package\PackageTmp\Web.config'. Deployment will continue with the original data. Details:
No matches were found for the search string '/configuration/system.servicemodel/client/endpoint[@name='WordAutomationBasicHttpEndpoint']/@address' (type 'XmlFile').

因此,SetParameters.xml文件中的所有参数都不会转换为web.config文件。

所以目前我有一个Web部署包,它将使用发布任务WinRM - IIS Web App Deployment部署到IIS,没有特殊参数,但我不能手动部署相同的包。

有什么想法吗?

西蒙

3 个答案:

答案 0 :(得分:0)

一直在进行一些测试,构建参数与此问题无关。

我创建了一个简单的ASP.Net Web应用程序,将一个appSettings添加到web.config(testKey)

  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="testKey" value="testValue" />
  </appSettings>

然后我添加了一个parameters.xml文件

<parameters>
  <parameter name="testKey" defaultValue="123">
    <parameterEntry kind="XmlFile" scope="Web.config"
                    match="/configuration/appsettings/add[@key='testKey']/@value" 
                    />
  </parameter>
</parameters>

将应用程序发布到我的c盘上的Web部署包(.zip)。 setparameters.xml文件如下所示。

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="Test" />
  <setParameter name="testKey" value="123" />
</parameters>

然后手动部署我右键单击我们的IIS站点,单击Deploy / Import Application,接受所有默认值,然后我收到以下警告和错误

  

[29/08/2017 1:13:56 PM]参数输入&#39; IIS Web应用程序名称/ 1&#39;   适用于   &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]执行同步传递

     

1。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web应用程序名称/ 1&#39;适用于

     

&#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 1&#39;适用于   &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 1&#39;适用于   &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]没有执行备份。   [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web应用程序名称/ 1&#39;   适用于   &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]来源createApp   (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)不匹配   目标(DefaultWebsite / Test)属性不同   (isDest [&#39;假&#39;&#39;真&#39;])。更新待定。 [29/08/2017 1:13:56 PM]   在createApp上更新操作   (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)跳过   因为规则ApplicationExistsRule。 [29/08/2017 1:13:56 PM]来源   文件路径   (C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \的parameters.xml)   与目标不匹配(DefaultWebsite / Test \ parameters.xml)   属性不同(大小[&#39; 306&#39;,&#39; 340&#39;],lastWriteTime [&#39; 08/29/2017   03:42:50&#39; 08/29/2017 03:34:38&#39;])。更新待定。 [29/08/2017 1:13:56   PM]更新文件(DefaultWebsite / Test \ parameters.xml)。 [29/08/2017   1:13:56 PM]参数输入&#39; testName / 1&#39;适用于   &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \查看\ Web.config文件&#39;   因为它的范围。 [29/08/2017 1:13:56 PM]参数输入   &#39;测试名/ 1&#39;无法应用   &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \视图\的Web.config&#39 ;.   部署将继续使用原始数据。细节:没有比赛   找到了搜索字符串   &#39; /配置/的AppSettings /添加[@name =&#39;密押&#39;] / @值&#39; (类型   &#39; XMLFILE&#39)。 [29/08/2017 1:13:56 PM]属性&#39;大小&#39;平等改变了   比较filePath时为False   (DefaultWebsite / Test \ Views \ Web.config)来   C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \查看\ Web.config文件   因为规则参数化。 [29/08/2017 1:13:56 PM]来源   文件路径   (C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \视图\的Web.config)   与目标不匹配(DefaultWebsite / Test \ Views \ Web.config)   属性(参数)不同。更新待定。 [29/08/2017   1:13:56 PM]源文件路径   (C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \视图\的Web.config)   替换为更改的属性(大小[&#39; 1925&#39;,&#39; 1924&#39;])因为规则   参数。 [29/08/2017 1:13:56 PM]更新文件   (DefaultWebsite /测试\查看\ Web.config文件)。 [29/08/2017 1:13:56 PM]   参数输入&#39; testName / 1&#39;适用于   &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \的Web.config&#39;   因为它的范围。 [29/08/2017 1:13:56 PM]参数输入   &#39;测试名/ 1&#39;无法应用   &#39; C:\ TEMP \测试\测试\测试\ OBJ \发布\包\ PackageTmp \的Web.config&#39 ;.   部署将继续使用原始数据。细节:没有比赛   找到了搜索字符串   &#39; /配置/的AppSettings /添加[@name =&#39;密押&#39;] / @值&#39; (类型   &#39; XMLFILE&#39)。 [29/08/2017 1:13:56 PM]来源setAcl   (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)不匹配   目标(DefaultWebsite / Test)属性不同   (isDest [&#39;假&#39;&#39;真&#39],setAclUser,setAclAccess)。更新待定。   [29/08/2017 1:13:56 PM]为路径添加ACL(DefaultWebsite / Test)   [29/08/2017 1:13:56 PM]来源setAcl   (C:\ temp \ test \ test \ test \ obj \ Release \ Package \ PackageTmp)不匹配   目标(DefaultWebsite / Test)属性不同   (isDest [&#39;假&#39;&#39;真&#39],setAclUser,setAclAccess)。更新待定。   [29/08/2017 1:13:56 PM]为路径添加ACL(DefaultWebsite / Test)   [29/08/2017 1:13:56 PM]依赖性检查&#39; DependencyCheckInUse&#39;   发现没有问题。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 1&#39;适用于   &#39; iisApp / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]参数输入&#39; IIS Web   申请名称/ 2&#39;适用于   &#39; SETACL / C:\ TEMP \测试\测试\测试\ OBJ \发布\包装\ PackageTmp&#39;因为   其范围。 [29/08/2017 1:13:56 PM]同步完成了   1次传递。

站点部署但web.config未使用SetParameters.xml文件中的值进行更新。所以testKey的值应该是123。

我认为它与范围有关,但有点丢失。

答案 1 :(得分:0)

最新答复,但我遇到了同样的问题,该值未在我的web.config中更新。

原来我的问题是由于匹配字符串中的大小写敏感。您在哪里:

  

match =“ / configuration / appsettings / add [@ key ='testKey'] / @ value”

应该是:

match =“ / configuration / app S ettings / add [@ key ='testKey'] / @ value”

请注意appSettings中的大写字母。

这就是它为我工作的原因。

答案 2 :(得分:0)

我发现这个问题发生了(或者至少在我身上发生了),因为web.config在<configuration xmlns="http://schemas.microsoft.com/.Netconfiguration/V2.0">标记中有一个XML模式定义参数,删除了这个XMLNS参数,所以它只是{{1 }}解决了这个问题。