对于正在使用的软件,我们在一个解决方案中有多个项目。在大多数项目中,我们只能构建解决方案,然后发布所需的Web项目的工件。 API和Auth项目虽然略有不同。当前的部署过程是手动的,对于API(STARS.API.csproj)和Auth(STARS.Auth.csproj)项目,当进入Visual Studio 2017时,右键单击该项目,然后单击“发布”,选择一个配置文件,然后发布。完成此操作后,我们将使用“发布输出”并将这些文件拖放到我们的服务器上。
我们正在尝试通过TFS进入自动化流程,并且我在构建定义中使用Visual Studio Build任务。但是,当我尝试通过TFS运行它时,出现一条错误消息,指出找不到发布配置文件:
验证PublishProfile(TFSProfile.pubxml)设置。 C:\程序 文件(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web \ Microsoft.Web.Publishing.targets(4368,5): 错误:PublishProfile的值设置为“ TFSProfile.pubxml”, 预期在以下位置找到文件 'C:\ agent_work \ 4 \ s \ STARS \ Source-dev \ STARS.Web \ Properties \ PublishProfiles \ TFSProfile.pubxml' 但找不到。
它正在寻找另一个项目文件夹中的发布配置文件。
Visual Studio构建任务:
我觉得我完全可以解决这个错误。我只是想复制通过Visual Studio 2017手动发布项目的过程。
如果您需要更多信息,请告诉我。
答案 0 :(得分:1)
我建议您开始使用pre-defined build variables。 $(Build.SourcesDirectory)将映射到C:\ agent_work \ 4 \ s,然后您可以在其中创建TFSProfile.pubxml的完整路径,无论它在源代码树中是什么位置。在MB构建参数PublishProfile属性中使用此完整路径,例如
/p:PublishProfile=$(Build.SourcesDirectory)\STARS\Source-dev\STARS-API\TFSProfile.pubxml
您可能遇到的另一个问题是,在“解决方案”字段中您未指定解决方案( .sln),而是一个项目( .csproj)。我怀疑MSBuild会选择与该csproj相关的解决方案,并构建整个解决方案,这就是为什么它要在STARS.Web中寻找发布配置文件。您是否为STARS.API创建了发布配置文件?