尝试部署程序包时,“源(dirPath)和目标(iisApp)与给定操作不兼容”错误

时间:2013-10-29 13:05:52

标签: msbuild msdeploy webdeploy

我正在尝试通过MSBuild中的MSDeploy任务部署一个包。

我已配置两个项目组来表示我的来源和目的地。

源是我创建的包,例如。 Solution.zip 目标是远程服务器上的IIS 7。

配置如下所示:

<ItemGroup>
    <DeploySource Include="package">
        <Path>$(PackagePath)</Path>
    </DeploySource>
</ItemGroup>

<ItemGroup>
    <DeployDestination Include="iisApp">
        <ComputerName>https://myserver.com/msdeploy.axd</ComputerName>
        <UserName>XXXXXXXX</UserName>
        <Password>XXXXXXXX</Password>
        <AuthType>Basic</AuthType>
        <Path>Default Web Site/Umbraco.Web_deploy</Path>
    </DeployDestination>
</ItemGroup>
<PropertyGroup>
    <ConfigFileName>Staging.config</ConfigFileName>
</PropertyGroup>

然后我在MSBuild中调用MSDeploy任务,如下所示:

<Target Name="Deploy_v2">
    <!-- Using ContinueOnError due to a bug in MSDeploy task-->
    <MSDeploy
        ContinueOnError="true" 
        ToolPath="C:\Program Files\IIS\Microsoft Web Deploy V3"
        Verb="sync"
        Source="@(DeploySource)"
        Destination="@(DeployDestination)" 
        AllowUntrusted="true"
        Replace="objectName=filepath,match=Configs\$(ConfigFileName),replace=web.config"
    />
</Target>

这会导致以下命令行执行

C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe -source:package='C:\CLIENTS\DAM\Components\Umbraco\SiteTemplate_v6_1_6\Output\Package\UmbracoTemplate_v6_1_6.zip' -dest:iisApp='Default WebSite/Umbraco.Web_deploy',ComputerName='https://myserver.com/msdeploy.axd',UserName='XXXXXXX',Password='XXXXXXXX',AuthType='Basic' -verb:sync -replace:objectName=filepath,match=Configs\Staging.config,replace=web.config -allowUntrusted

遗憾的是,导致以下错误:

MSDEPLOY : Error: Source (dirPath) and destination (iisApp) are not compatible for the given operation.

在我看来,MSDeploy正在将我的包视为dirPath。当我创建包时,它确实使用了dirPath作为源。

1 个答案:

答案 0 :(得分:0)

由于错误状态dirPathiisApp不是兼容的提供商,尽管iisApp确实使用dirPath。见here

iisApp可以将目录作为源,因此请尝试通过iisApp打包目标目录,如下所示:

msdeploy -verb:sync -source:iisApp=c:\inetpub\wwwroot -dest:package=Package.zip

顺便说一下,如果您使用的是Visual Studio,则可以使用带有MSBuild的{​​{1}}生成MSDeploy包。