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

时间:2012-02-17 13:40:03

标签: deployment msbuild continuous-integration msdeploy n2cms

为了使我的CMS正常工作,需要将其部署到www根目录下的虚拟目录中,以便它可以访问(通过反射)要管理的网站(注意:CMS = N2CMS)。使用Visual Studio“发布到Web”时一切都很好。但是当我通过msbuild命令行生成包并发布该版本时,我的虚拟目录将转换为虚拟应用程序。

我将远程服务器配置为在我的IIS Web应用程序('exampleapp')下面有一个虚拟目录'/ n2',并在Package / Publish Web设置中配置此路径( IIS网站/应用程序名称用于目标服务器)在我的Visual Studio项目中。

生成部署包:

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 个答案:

答案 0 :(得分:4)

在Microsoft.Web.Publishing.targets文件中,DeployAsIisApp默认为true:

&lt; DeployAsIisApp Condition =“'$(DeployAsIisApp)'==''”&gt; true&lt; / DeployAsIisApp&gt;

您应该能够通过将其添加到项目文件中的相应PropertyGroup元素或项目文件夹中的.wpp.targets文件中将其覆盖为false;编辑项目文件时,请参阅

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

答案 1 :(得分:4)

在将Web应用程序项目(WAP)发布到虚拟目录而不将其标记为IIS应用程序时,我已成功使用以下组合参数(在csproj中):

<DeployOnBuild>True</DeployOnBuild>
<DeployAsIisApp>False</DeployAsIisApp>
<DeployIisAppPhysicalPath>MyWebSite/MyVirtualDirectory</DeployIisAppPhysicalPath>
相关问题