gpt4 book ai didi

c# - MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板

转载 作者:可可西里 更新时间:2023-11-01 03:08:21 24 4
gpt4 key购买 nike

在 Visual Studio 2015 中,我使用的是 NuGet 包 Unofficial.Microsoft.VisualStudio.TextTemplating.14.0.0,它允许我在构建项目时直接从 MSBuild 转换 T4 模板。

然而,在 Visual Studio 2017 RTM 中,这会破坏构建并显示以下消息:

运行转换代码时抛出异常。该过程无法继续。抛出以下异常:
System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.CodeAnalysis,Version=1.3.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。
文件名:'Microsoft.CodeAnalysis,Version=1.3.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'

这是由此包中的文件 Unofficial.Microsoft.VisualStudio.TextTemplating.targets(396,5) 引发的。

我的猜测是错误来自于由于环境不匹配而尝试使用 VS 2017 构建中的这些目标,但我不知道如何追踪确切的问题。我还没有看到 v15 的更新包。

如何从适用于 VS 2017 的 MSBuild 执行 T4 转换?是否会有来自 NuGet 的新包在某个时候使用,或者不再支持它?

最佳答案

我找到了正确的解决方案。

事实证明,T4 SDK 现在作为 Visual Studio 2017 的一部分包含在内(而不是像过去那样作为单独的建模 SDK 的一部分),但您必须通过 Visual Studio 扩展安装它VS2017 安装程序中的开发 工具集(文本模板转换功能)。

安装后,您可以使用 MSBuild 通过将相关目标导入 MSBuild 项目来转换模板:

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<TransformOnBuild>True</TransformOnBuild>
<TransformOutOfDateOnly>false</TransformOutOfDateOnly>
</PropertyGroup>

<!-- add AFTER import for $(MSBuildToolsPath)\Microsoft.CSharp.targets -->
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />

这解决了我的问题,也消除了对单独的非官方 NuGet 包的需要。

关于c# - MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42662011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com