MSBuild 从参数中删除条目.xml



我一直在尝试让 msbuild 生成正确的 Web 部署包,以便我可以戳入应用程序池标识的值。

在我的项目中,我有参数.xml用户和密码的以下条目:

  <parameter name="username" description="AppPool identity username" defaultValue="domainusername">
    <parameterValidation type="RegularExpression" validationString="(?=^.{8,}$)((?=.*d)|(?=.*W+))(?![.n])(?=.*[A-Z])(?=.*[a-z]).*$" />
    <parameterEntry type="DeploymentObjectAttribute" scope="processModel" match="/processModel/@userName" />
  </parameter>
  <parameter name="password" description="AppPool identity password" tags="password" defaultValue="DefaultPassword">
    <parameterEntry type="DeploymentObjectAttribute" scope="processModel" match="/processModel/@password" />
  </parameter>

我使用的 msbuild 命令:

"C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe" "./TestSolution.sln" 
/p:configuration="Release" 
/p:outdir=".././deploy/Packages/Release" 
/target:clean;build
/p:DeployOnBuild=true;
    DeployTarget=Package;
    IncludeAppPool=true;
    IncludeIisSettings=true;
    DeployEncryptKey=Password

包生成正确,但问题在于新参数.xml该参数放置在压缩文件夹中。用户名/密码条目已更改为:

  <parameter name="Username" description="Identity Username" defaultValue="domainusername" />
  <parameter name="Password" description="Identity Username Password" defaultValue="DefaultPassword" tags="password" />

如您所见,参数条目和验证已被删除。如果我尝试使用 msdeploy 部署应用程序并在 SetParameters 中设置用户名和密码,它不会戳到应用程序池的新值。

如果我手动将删除的行添加回包中,则部署将正常工作,并且应用程序池将获取 SetParameters 文件中的标识集。

这是设计使然吗?有没有办法强制 msdeploy 在构建包时不删除这些行?

花了几天时间试图让它工作,我遇到的任何例子都没有解决这个问题。

希望有人能有一些见解。

终于找到了问题!

这是参数的定义方式。如果您查看参数.xml我将使用以下方法定义所有内容:

<parameterEntry type=

将所有"类型"更改为"种类"会生成正确的包参数.xml并启用应用程序标识的戳。

这是因为我使用了 IIS 论坛上发布的代码:

http://forums.iis.net/t/1176867.aspx

对于此应用程序,这似乎是不正确的。不确定是版本差异还是其他原因。

最新更新