为了使我的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>
任何人都知道为什么虚拟目录会转换为虚拟应用程序?
答案 0 :(得分:4)
在Microsoft.Web.Publishing.targets文件中,DeployAsIisApp默认为true:
&lt; DeployAsIisApp Condition =“'$(DeployAsIisApp)'==''”&gt; true&lt; / DeployAsIisApp&gt;
您应该能够通过将其添加到项目文件中的相应PropertyGroup元素或项目文件夹中的.wpp.targets文件中将其覆盖为false;编辑项目文件时,请参阅
答案 1 :(得分:4)
在将Web应用程序项目(WAP)发布到虚拟目录而不将其标记为IIS应用程序时,我已成功使用以下组合参数(在csproj中):
<DeployOnBuild>True</DeployOnBuild>
<DeployAsIisApp>False</DeployAsIisApp>
<DeployIisAppPhysicalPath>MyWebSite/MyVirtualDirectory</DeployIisAppPhysicalPath>