MSdeploy使用错误的虚拟目录名部署MVC 2应用程序

Noz*_*zim 4 iis msbuild asp.net-mvc msdeploy iis-7.5

我正在使用MSbuild(v4.0.30319.1)和MSdeploy(v7.1.618.0)在IIS上部署我的ASP MVC 2应用程序(v7.5).以下是我运行的命令:

msbuild.exe <path to my csproj>/MyMvcApp.csproj /t:Package /p:configuration=release;outDir=<my output dir>
Run Code Online (Sandbox Code Playgroud)

和msdeploy:

msdeploy.exe -verb:sync -source:package='<MSBuildOutputDir>\_PublishedWebsites\Webui_Package\MyMVCApp.zip' -dest:auto 
Run Code Online (Sandbox Code Playgroud)

构建和部署后,应用程序按地址http://localhost/MyMVCApp_deploy而不是地址进行部署http://localhost/MyMVCApp.我没想到_deploy会在地址中.我怎样才能解决这个问题?

Say*_*imi 12

正如Portalus所述,您可以在属性页面中控制应用程序的名称.我会在这里扩展一下这个答案.

在PP/Web选项卡上配置默认值

默认情况下,在打包/发布Web项目时,我们将创建一个名为IIS Web Application Name的Web Deploy参数来控制此值.它的默认值是 ProjectName_deploy.我们将_deploy后缀放在那里的原因是IIS场景.因此,您可能已经拥有一个名为ProjectName的IIS应用程序,但它不太可能有一个名为ProjectName_deploy的应用程序.您可以在项目属性的" 包/发布Web"选项卡上自定义此值.如果你走这条路线,要记住的一件事是所有这些设置都与特定的构建配置相关联.因此,如果您在Debug上配置设置并使用Release创建包,则这些设置将不适用.见下图.

在此输入图像描述

设置此值时,它会设置MSBuild属性DeployIisAppPath,如果您想要获得与其获得的值相关的逻辑,则可以使用它.

在发布时传递参数值

如果需要,还可以在发布时指定此参数的值.您有两种主要方法.

  1. 指定单个属性的值
  2. 指定文件中此属性和其他属性的值

1.指定单个属性的值:

调用msdeploy.exe时,可以使用-setParam参数为该参数提供新值.例如:

%msdeploy% -verb:sync -source:package=WebApplication3.zip -dest:auto -setParam:name="IIS Web Application Name",value="Default Web Site/FooBar"
Run Code Online (Sandbox Code Playgroud)

2.指定文件中此属性和其他属性的值

在VS中创建包时,我们会自动为您创建一个名为{ProjectName} .SetParameters.xml的文件.此文件是一个简单的XML文件,它将包含所有参数及其默认值.您可以更新该文件以包含正确的参数值,然后将其传递给msdeploy.exe(注意:该文件不必命名... SetParameters.xml您可以将其重命名为您想要的任何名称).如果要使用此方法,则只需在调用msdeploy.exe时使用-setParamFile参数.以下是此命令行语法的示例:

%msdeploy% -verb:sync -source:package=WebApplication3.zip -dest:auto -setParamFile=WebApplication3.SetParameters.xml
Run Code Online (Sandbox Code Playgroud)