chr*_*zan 6 c# msbuild t4 typeloadexception
我正在使用T4 文本模板从 XML 文件生成一个带有常量的静态类。模板应在每次构建时进行转换,因此我在 .csproj 中添加了以下语句:
<Import Project="$(MSBuildExtensionsPath)\...\TextTemplating\Microsoft.TextTemplating.targets" />
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这在我的本地开发计算机 (Visual Studio 2019) 上运行良好,但 CI 构建失败,并显示:
##[error]C:\...\TextTemplating\Microsoft.TextTemplating.targets(340,5): Error MSB4018: The "TransformTemplates" task failed unexpectedly.
System.TypeLoadException: Could not load type 'System.Windows.DependencyObject' from assembly 'WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
at Microsoft.VisualStudio.TextTemplating.Sdk.Host.GenericTextTemplatingHost.InternalConstruct()
at Microsoft.VisualStudio.TextTemplating.Sdk.Host.GenericTextTemplatingHost..ctor(IServiceProvider serviceProvider, ITelemetryService telemetryService)
at Microsoft.VisualStudio.TextTemplating.Build.Tasks.TransformTemplatesBase.GetConfiguredTextTemplatingHost()
at Microsoft.VisualStudio.TextTemplating.Build.Tasks.TransformTemplatesBase.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
Run Code Online (Sandbox Code Playgroud)
构建服务器没有安装 Visual Studio,但具有工作负载“.NET 构建工具”、“.NET 桌面构建工具”和“Webdevelopment 构建工具”的 Visual Studio Build Tools 2019。存在“文本模板转换”组件以及“Visual Studio SDK 构建工具核心”。MSBuild 找到所有需要的 .dll。引起问题的 Visual Studio 项目属于类库类型,并且面向 .NET Standard 2.0。