MsDeploy虚拟目录在部署时转换为虚拟应用程序

3
为了使我的CMS正常工作,它需要部署到www根目录下的一个虚拟目录中,以便通过反射访问网站进行管理(注:CMS = N2CMS)。使用Visual Studio的“发布到Web”一切正常。但是,当我通过msbuild命令行生成包并发布该版本时,我的虚拟目录会被转换为虚拟应用程序。
我配置了远程服务器,在IIS Web应用程序“exampleapp”下设置了虚拟目录“/n2”,并在Visual Studio项目中的“Package/Publish Web”设置(用于目标服务器的IIS网站/应用程序名称)中配置了此路径。
要生成部署包:
msbuild.exe myproject.csproj /T:Package

这将生成包含我的代码的压缩包以及执行MsDeploy命令行批处理文件的文件(标准msbuild/msdeploy目标)。

生成的SetParameters.xml包含以下内容:

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

生成的 SourceManifest.xml 包含以下内容。
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <IisApp path="C:\...shortened-path...\PackageTmp" managedRuntimeVersion="v4.0" />
  <setAcl path="C:\...shortened-path...\PackageTmp" setAclResourceType="Directory" />
  <setAcl path="C:\...shortened-path...\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
</sitemanifest>

有人知道为什么虚拟目录会被转换为虚拟应用程序吗?

2个回答

4
我使用以下部署参数(在csproj中)成功地将Web应用程序项目(WAP)发布到虚拟目录中,而无需将其标记为IIS应用程序:

<DeployOnBuild>True</DeployOnBuild>
<DeployAsIisApp>False</DeployAsIisApp>
<DeployIisAppPhysicalPath>MyWebSite/MyVirtualDirectory</DeployIisAppPhysicalPath>

4
在Microsoft.Web.Publishing.targets文件中,DeployAsIisApp默认为true: < p > <DeployAsIisApp Condition="'$(DeployAsIisApp)'==''">true</DeployAsIisApp> < /p > 您可以通过将其添加到项目文件或项目文件夹中的.wpp.targets文件中的适当PropertyGroup元素来覆盖它为false;在编辑项目文件时,请参见:

http://msdn.microsoft.com/en-us/library/ff398069.aspx


当将DeployAsIisApp设置为false时,似乎可以工作,但现在MsDeploy无法“获取”指定的部署目录实际上是位于其他位置的虚拟目录。(错误:使用物理路径时,必须指定“setAcl”提供程序与“setAclUser”设置的值。) - Mark van Straten
1
我还在目标文件中看到了<IncludeSetAclProviderOnDestination Condition="'$(IncludeSetAclProviderOnDestination)'==''">True</IncludeSetAclProviderOnDestination>,所以我猜你可以将其关闭。 - tdykstra
当在我的.csproj中将IncludeSetAclProviderOnDestination设置为false时,错误消失了。但是错误似乎源于以下事实:当您将DeployAsIisApp默认设置为False时,SetParameters.xml中的“ IIS Web Application Name”会以(本地)文件路径为后缀(该路径在服务器上不存在)。将其更正为服务器路径可以解决此问题(IncludeSetAclProviderOnDestination = False)。 - Mark van Straten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接