0

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

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

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

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

如何确保只接受一个服务项目而不是一个?

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

/目标:服务.csproj

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

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

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

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

现在,在发布到 TFS 服务器时,PublishUrl 具有 TFS 服务器位置的路径,例如“(服务器 IP 地址)/文件夹/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 命令提示符执行此操作时效果很好。

任何帮助表示赞赏。

4

1 回答 1

0

在 VSBuild 任务中:

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

给出以下 MSBuild 参数:

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

例如,如果您的服务程序集是 ABService,那么 ServiceAssemblyName=A_B_Service。

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

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

在此之后,只需将构建排队即可。

于 2018-07-16T10:17:54.467 回答