用于在 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 共享文件夹。您需要成为管理员才能实现此目的。
在此之后,只需对构建进行排队即可。
我正在尝试使用 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 共享文件夹。您需要成为管理员才能实现此目的。
在此之后,只需对构建进行排队即可。