我一直在尝试让 msbuild 生成正确的 Web 部署包,以便我可以插入应用程序池标识的值。
在我的项目中,我有 parametes.xml,其中包含以下用户和密码条目:
<parameter name="username" description="AppPool identity username" defaultValue="domain\username">
<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
包会正确生成,但问题在于放置在压缩文件夹中的新 parameters.xml。用户名/密码条目已更改为:
<parameter name="Username" description="Identity Username" defaultValue="domain\username" />
<parameter name="Password" description="Identity Username Password" defaultValue="DefaultPassword" tags="password" />
如您所见, parameterEntry 和 Validation 已被删除。如果我尝试使用 msdeploy 部署应用程序并在 SetParameters 中设置用户名和密码,它不会为 ApplicationPool 插入新值。
如果我手动将删除的行重新添加到包中,则部署可以正常工作,并且应用程序池会获取 SetParameters 文件中设置的标识。
这是设计使然吗?有没有办法强制 msdeploy 在构建包时不要删除这些行?
过去几天我一直试图让它工作,我遇到的任何例子都没有解决这个问题。
希望有人可能有一些见解。