Use*_*rol 1 .net msbuild tfs visual-studio visual-studio-2017
VS 2017 Enterprise 中的新依赖项验证功能需要在安装程序中检查附加组件。然后它会升级您的.csproj文件以包含Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets. 在本地像魅力一样工作,但不是在构建服务器上:
错误 MSB4226:未找到导入的项目“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets”。此外,尝试在 $(VSToolsPath) 的后备搜索路径中找到“ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets” - “C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15. 0”。这些搜索路径在“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe.Config”中定义。确认声明中的路径正确,并且该文件存在于磁盘上的搜索路径之一中。
我们的构建服务器是 Visual Studio Team Services,配置为使用最新版本的 VS(即 2017)。我们需要安装/配置什么才能让它工作?
Visual Studio Enterprise 2017 只需要编辑模型文件。实际验证将适用于非企业版 VS2017、VS2015 更新 2 或更高版本,以及未安装 Visual Studio 的构建机器。你只需要Microsoft.DependencyValidation.Analyzers NuGet 包和模型文件。
该Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets文件是旧的传统(VS2015和更早的版本)做相关性验证的方式。如果您查看 VS 附带的目标的 VS2017 版本,您将看到所有目标都被重新定义为Building/Rebuilding/Cleaning a dependency validation project is a no-op. VS2017 中发布的目标的唯一原因是避免破坏使用旧层验证机制在 VS2015 中创建的解决方案,该机制确实依赖于目标。
如果您不在 VS2015 和 VS2017 之间往返,那么您的.csproj文件不需要导入这些目标。您可以删除导入语句,或者如果您是往返添加一个条件,以便目标仅在存在时才导入,例如
<Import Project="$(VSToolsPath)\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets"
Condition="Exists('$(VSToolsPath)\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets')" />
Run Code Online (Sandbox Code Playgroud)
在构建服务器上,您可以从构建中排除.modelproj文件。或者,您可以调整.modelproj 中的导入,使其在 VS2017 和 VS2015 中都可以使用,但如果目标不存在,则不会失败:
<Import Project="$(VSToolsPath)\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets"
Condition="Exists('$(VSToolsPath)\ArchitectureTools\Microsoft.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)\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets')"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2888 次 |
| 最近记录: |