用于在 TFS 构建中发布 wcf 服务的 Msbuild 参数

Msbuild Arguments for publishing wcf service in TFS build

我正在尝试使用 TFS 构建发布 WCF 服务,但构建失败。

我尝试在 TFS 的 VSBuild 中使用给定的参数:

/p:DeployOnBuild=True /p:PublishProfile=TestDataProfile /p:PublishProfileRootFolder=$(RelativePath)\Properties\PublishProfiles 

发生这种情况是因为 sln 中有两个 WCF 服务,因此构建失败,因为它无法在其他服务中找到配置文件。

如何保证服务项目只有一个而不是一个?

我尝试使用 TFS 中的 MSBuild 任务仅构建一个 csproj,方法是将其作为参数,

/目标:Service.csproj

这导致失败,说找不到目标。

我还尝试在 TFS 中使用 MSBuild 构建一个 csproj,但出现以下错误:

Cannot determine the packages folder to restore NuGet packages. Please specify either -PackagesDirectory or -SolutionDirectory.

编辑: 这个问题通过调试 metaproj 文件解决了,我得到了正确的参数。

现在,在发布到 TFS 服务器时,PublishUrl 具有指向 TFS 服务器位置的路径,如“(服务器 ip 地址)/Folder/PublishService”。

显示给定问题导致失败:

 Publish Pipeline Deploy phase Stage PipelinePreDeployCopyAllFilesToOneFolder
WebFileSystemPublish:
Creating directory "\Server ip\VishalBuildTest\ServiceData".
[error]C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Deploy\Microsoft.Web.Publishing.Deploy.FileSystem.targets(93,5): Error MSB3191: Unable to create directory "\Server ip\VishalBuildTest\ServiceData". Access to the path '\Server ip\VishalBuildTest\ServiceData' is denied.

运行需要什么权限?

在 MSBuild 命令提示符下执行此操作时效果很好。

感谢任何帮助。

在 VSBuild 任务中:

在sln路径中,给出包含WCF服务的具体方案。

提供以下 MSBuild 参数:

/t:(Solution folder name)\(Service Assembly name) /p:DeployOnBuild=True /p:PublishProfile=TestDataProfile

例如,如果您的服务程序集是 A.B.Service 然后是 ServiceAssemblyName=A_B_Service.

在 PublishProfile 文件中,您需要指定 PublishUrl 为我们要发布此服务的文件服务器路径的值。

另外,为了访问,您需要转到部署 tfs 的本地计算机并与 TFS 共享文件夹。您需要成为管理员才能实现此目的。

在此之后,只需对构建进行排队即可。