在 TFS 构建中部署 WCF Web 服务

Deploying a WCF Web Service inside a TFS Build

我尝试将许多 WCF Web 服务部署到 TFS Build 上的目录结构中。项目结构如下所示:

Services Directory (svc.sln)
- Project1 (project1.csproj)
- Project2 (project2.csproj)
- Project3 (project3.csproj)
- ServicesProject
  - Project1
    - Project1.svc
  - Project2
    - Project2.svc
  - Project3
    - Project3.svc
  - bin
    - Project1.dll
    - Project2.dll
    - Project3.dll

所以,为了部署它,在我的桌面上,我只需加载 ServicesProject.csproj,发布,select 一个发布配置文件,它会愉快地发布到一个目录(准备被复制到 IIS)。

然后我尝试使用以下参数将其添加到 TFS 构建中:

/p:DeployOnBuild=true /p:PublishProfile=MyPublishProfile

我得到一个错误,说:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets (182): Could not copy the file "bin\Project1.dll" because it was not found.

我查看了代理构建目录,果然,那里只有一个 dll (ServicesProject.dll)。然后我将构建更改为构建 svc.sln,但我仍然遇到相同的错误。我检查了 sln 文件的构建顺序,它确实最后有 ServicesProject,但是,日志文件表明它是第二个构建的。

我已经提供了如此多的细节,以防这个问题的答案在于我所采用的方法,而不是我实际正在做的事情的细节。

我的问题是:我这样做是否正确,如果正确,为什么 sln 文件的构建顺序错误。有没有更简单的方法来实现这个?

我建议从 TF Build 进行的任何部署都是错误的实现方式。您应该改为输出网站,这是自动的,并使用 Release Management 进行部署。

http://nakedalm.com/create-release-management-pipeline-professional-developers/

RM 内置于 TFS 中,尽管您需要单独安装它,并且允许您使用 PowerShell 创建部署。部署和配置您的网站非常容易,在 post 中您可以看到切换变量也很简单。

比尝试将部署硬塞进构建工具要容易得多。