6

我正在尝试使用 MSBuild 和 Team Foundation Server 的自动部署将控制台应用程序部署到 DMZ 服务器上的文件夹。

我已经在同一台服务器上部署了多个站点,并且效果很好。我尝试了多种方法,但未部署文件。

首先,我尝试以与我的网站相同的方式部署控制台应用程序,即:

<MSBuild
    Projects="$(SolutionRoot)\MySolution.sln"
    Properties="AllowUntrustedCertificate=True;AuthType=Basic;
    Configuration=DEBUG;CreatePackageOnPublish=True;                                
    DeployIisAppPath=Default Website/dummy.dev.myapp;
    DeployOnBuild=True;DeployTarget=MsDeployPublish;
    MSDeployPublishMethod=WMSvc;
    MsDeployServiceUrl=https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd;
    UserName=userid;Password=password;UseMsdeployExe=True"
/>

没有成功。

编辑:不返回错误消息。一切似乎都很顺利。

然后,我还尝试按如下方式部署控制台应用程序:

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe&quot; 
                -verb:sync 
                -source:contentpath=&quot;$(OutDir)\MyApp.Precompiled&quot; 
                -dest:contentpath=&quot;D:\dev.myapp&quot;,computername=xxx.xxx.xxx.xxx,username=userid,password=password" 
                ContinueOnError="false" />

我实际上也尝试使用计算机名作为https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd.

编辑:以下是我得到的。EXEC:FileOrFolderNotFound EXEC:无法创建“contentPath”类型和路径“E:\Builds\1...\dev.myapp”的对象。执行:路径 '\?\E:\Builds\1...\dev.myapp' 无效。执行:1. E:\Builds\1...\BuildType\Targets\Deploy.targets (142):命令“C:\Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe”-verb:sync -source:contentpath="E:\Builds\1...\dev.myapp" -dest:contentpath="D:\dev.myapp",computername=https://xxx.xxx.xxx.xxx:8172/ MsDeploy.axd,username=userid,password=password" 以代码 -1 退出。我意识到我还没有阅读所有错误,我真的需要 UNC 路径吗?

有谁知道如何做到这一点?

4

3 回答 3

8

我终于找到了如何让它工作。

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V2\MSDeploy.exe&quot; 
            -verb:sync 
            -source:contentpath=&quot;$(OutDir)\MyApp.Precompiled&quot; 
            -dest:contentpath=&quot;D:\dev.myapp&quot;,computername=https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd,username=userid,password=password,authtype=Basic 
            -allowUntrusted=True" 
            ContinueOnError="false" />

我将计算机名更改为computername=https://xxx.xxx.xxx.xxx:8172/MsDeploy.axd,添加了authtype=BasicallowUntrusted=True,瞧,它起作用了。

对于第一个选项出了什么问题,没有任何形式的反馈是非常令人沮丧的。但是当我使用第二种选择时,我得到了可以使用的反馈。

如果有人知道如何使用 MSBuild 任务完成这项工作,请随时赐教。

于 2012-05-29T08:55:26.517 回答
3

尝试使用 dirPath提供程序而不是 contentPath,它的行为更像是文件夹同步而不是 IIS 网站部署。

于 2012-05-29T01:18:16.130 回答
1

考虑到使用 EXEC 任务进行同步,您是否确保您的 csproj(或 vbproj)文件中有Microsoft.WebApplication.targets ?我可以看到它只是忽略了没有包含正确目标文件的 msbuild 任务。

例如,在我的 Web 服务项目文件中,我在我的 csproj 文件的底部有这个

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
于 2012-10-05T15:04:41.663 回答