Visual Studio 2017依赖性验证项目上的构建服务器



VS 2017 Enterprise中的新依赖关系验证功能需要在安装程序中检查一个其他组件。然后,它升级您的.csproj文件以包括Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets。像本地的魅力一样工作,但在构建服务器上不工作:

错误MSB4226:导入的项目" C: Program Files(X86) Microsoft 视觉的 Studio 2017 Enterprise MSBUILD MICROSOFT VISUALSTUDIO V15.0 ArchitectureTools Microsoft.visualstudio.teamarchitect.modelingproject.targets.targets" 没找到。另外,试图找到 " ArchitectureTools Microsoft.visualStudio.teamarchitect.modelingproject.targets" 在$(vstoolspath)的后备搜索路径中 - " c: program文件 (x86) msbuild microsoft visualstudio v15.0"。这些搜索路径是 在" C: Program Files(x86) Microsoft Visual中定义 Studio 2017 Enterprise MSBUILD 15.0 bin msbuild.exe.config"。 声明中的路径是正确的, 文件存在于搜索路径之一的磁盘上。

我们的Build Server是Visual Studio Team Services,该服务配置为使用最新版本的VS(即2017年)。我们需要安装/配置才能使其正常工作?

Visual Studio Enterprise 2017仅需要编辑模型文件。实际验证将在VS2017,VS2015 Update 2或更高版本的非企业版本以及未安装Visual Studio的构建计算机上使用。您只需要microsoft.ipendendencyValidation.analyzers nuget软件包和模型文件。

microsoft.visualstudio.teamarchitect.modelingproject.targets 文件是旧的(VS2015及更早)进行依赖性验证的遗产。如果您在VS2017版本中查看与VS发货的目标版本,您会发现所有目标都被重新定义为Building/Rebuilding/Cleaning a dependency validation project is a no-op。VS2017中发货的目标的唯一原因是避免使用旧层验证机制在VS2015中创建的解决方案,该机制确实依赖于目标。

如果您不在VS2015和VS2017之间进行往返,则您的 .csproj 文件不需要导入这些目标。您可以删除导入语句,或者如果您要添加条件,则只有在存在时才导入目标,例如。

  <Import Project="$(VSToolsPath)ArchitectureToolsMicrosoft.VisualStudio.TeamArchitect.ModelingProject.targets"
    Condition="Exists('$(VSToolsPath)ArchitectureToolsMicrosoft.VisualStudio.TeamArchitect.ModelingProject.targets')" />

在构建服务器上,您可以从构建中排除 .modelproj 文件。另外,您可以在 .modelproj 中调整导入,以便在VS2017和VS2015中起作用,但是如果目标不存在,则不会失败:

  <Import Project="$(VSToolsPath)ArchitectureToolsMicrosoft.VisualStudio.TeamArchitect.ModelingProject.targets"
    Condition="Exists('$(VSToolsPath)ArchitectureToolsMicrosoft.VisualStudio.TeamArchitect.ModelingProject.targets')" />
  <!-- In the .modelproj file, we need to define a Build target if we're not importing the modeling targets -->
  <Target Name="Build" Condition="!Exists('$(VSToolsPath)ArchitectureToolsMicrosoft.VisualStudio.TeamArchitect.ModelingProject.targets')"/>

您需要在构建代理上安装Visual Studio Enterprise,并确保还安装架构工具。与您在开发人员工作站上一样。

(这是不正确的 - 请参阅其他答案)

最新更新