如何强制MSBuild创建使用iisApp Provider应用程序路径的Web包,例如“默认网站/目录”?
我的构建过程是创建一个使用目录路径的包(C:\ Agent \ _work \ 28 \ s \ Catalog)。
我试图在我的MSBuild命令中添加“/ p:DeployAsIisApp = True”,但这似乎没有什么区别。
如果我将虚拟目录设置为我的Visual Studio 2017解决方案文件夹,然后Export a Package through IIS Manager,则会按照我期望的方式创建包。
我比较了MSBuild和IIS Export之间的archive.xml文件。这是一些部分输出:
的MSBuild:
<sitemanifest MSDeploy.ObjectResolver.createApp= ...>
<iisApp path="C:\Agent\_work\28\s\Catalog ...>
...
</sitemanifest>
IIS导出:
<MSDeploy.IisApp MSDeploy.ObjectResolver.createApp= ...>
<iisApp path="Default Web Site/Catalog" ...>
...
</MSDeploy.IisApp />
因此,当MSBuild正在创建sitemanifest时,IIS正在导出MSDeploy.IisApp。
如何让MSBuild与IIS导出相匹配?我正在使用VSTS构建系统,我传递给MSBuild的参数是:
MSBuild /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:PackageLocation="$(build.artifactstagingdirectory)\Catalog" /p:IncludeSetAclProviderOnDestination=False
答案 0 :(得分:0)
我解决了这个问题。
我遇到的具体问题是日志中的一行如下所示:
Verbose: Parameter entry 'IIS Web Application Name/1' could not be applied anywhere.
Parameters.xml就是这个(破碎):
<parameters>
<parameter name="IIS Web Application Name"
description="Full site path where you want to install the Catalog Application (for example, Default Web Site/Catalog)."
defaultValue="Default Web Site/Catalog"
tags="IisApp">
<parameterEntry kind="ProviderPath" scope="iisApp" match="@defaultValue" />
</parameter>
我将match属性设置为空字符串。然后一切都按预期开始工作。工作:
<parameters>
<parameter name="IIS Web Application Name"
description="Full site path where you want to install the Catalog Application (for example, Default Web Site/Catalog)."
defaultValue="Default Web Site/Catalog"
tags="IisApp">
<parameterEntry kind="ProviderPath" scope="iisApp" match="" />
</parameter>