3

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

我将远程服务器配置为在我的 IIS Web 应用程序('exampleapp')下有一个虚拟目录'/n2',并在我的打包/发布 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>

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

4

2 回答 2

4

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

<DeployOnBuild>True</DeployOnBuild>
<DeployAsIisApp>False</DeployAsIisApp>
<DeployIisAppPhysicalPath>MyWebSite/MyVirtualDirectory</DeployIisAppPhysicalPath>
于 2012-06-22T15:06:36.403 回答
4

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

<DeployAsIisApp Condition="'$(DeployAsIisApp)'==''">true</DeployAsIisApp>

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

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

于 2012-02-18T02:32:51.803 回答