为了使CMS能够正常工作,需要将其部署到www根目录下的虚拟目录,以便它可以访问(通过反射)网站进行管理(注意:CMS = N2CMS )。当使用Visual Studio'Publish To Web'时,一切都很好。但是,当我通过msbuild命令行生成包并发布该版本时,我的虚拟目录被转换为虚拟应用程序。MsDeploy虚拟目录在部署时转换为虚拟应用程序
我将远程服务器配置为在我的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>
任何人有一个线索,为什么虚拟目录被转化为虚拟应用?
嗯设置DeployAsIisApp为false时,它似乎工作,但现在MsDeploy没有“得到”指定的部署目录实际上是驻留在别处的虚拟目录。 ( 错误:当'setAcl'提供程序与物理路径一起使用时,必须指定'setAclUser'设置的值 )。 – 2012-02-21 09:09:43
我也看到< IncludeSetAclProviderOnDestination Condition =“'(IncludeSetAclProviderOnDestination)'==''”> True </IncludeSetAclProviderOnDestination >在目标文件中,所以我猜你可以关闭它。 – tdykstra 2012-02-22 22:37:01
在我的.csproj中将IncludeSetAclProviderOnDestination设置为false时,错误消失了。但是,错误似乎源于这样的事实:默认情况下,将DeployAsIisApp设置为False时,SetParameters.xml中的“IIS Web应用程序名称”后缀(本地)文件路径(服务器上不存在该文件路径)。将其更正为服务器路径解决了问题(使用IncludeSetAclProviderOnDestination = False)。 – 2012-02-27 10:29:56