Telerik OpenAccess Enhancer作用解析及VS2022编译失败排查
Telerik OpenAccess Enhancer 问题排查与核心疑问
背景与核心诉求
去年曾遇到Telerik OpenAccess enhancer不稳定问题,时而正常时而失效。当前遇到明确问题:项目在Visual Studio 2017中编译成功,但在Visual Studio 2022中编译失败。希望借此彻底理解Telerik OpenAccess enhancer的本质及问题解决方法,首先明确:Telerik OpenAccess enhancer究竟是什么?
项目的*.csproj文件中包含如下属性组:
<PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">x86</Platform> ... <EnhancerAssembly> $(SolutionDir)\packages\Telerik.DataAccess.Fluent.2016.2.822.1\ tools\enhancer\enhancer.exe </EnhancerAssembly> </PropertyGroup>
编译差异与报错详情
两次编译使用完全相同的构建设置。分别在VS2017和VS2022中,以Normal、Detailed、Diagnostics三种MSBuild详细程度构建项目,计划从差异明显的Normal模式入手排查。
VS2017编译输出显示增强成功,VS2022编译输出报错:
无法加载指定程序集,原因可能是enhancer运行在.NET Framework 2.0虚拟机中,待增强程序集是.NET 4.0程序集,或是在64位进程中增强x86程序集,建议修改enhancer.exe.config/venhance.exe.config的版本设置,或切换项目平台为Any CPU。
更新信息:32位的VS2017、VS2019编译正常,64位的VS2022编译失败;在Windows命令行执行相同编译命令也出现VS2022中的错误。
衍生疑问
- 相同命令行在VS2017、VS2022及Windows命令行中表现不同,三者的环境变量差异是什么?
- enhancer的
VerboseMode设为3,但其手册仅说明默认值为0,最大详细程度的值是多少?如何配置? - 编译时因指定
AlwaysCreate生成了*.oa文件,搜索发现该配置来自OpenAccessNuGet.targets中的Touch任务,此处的AlwaysCreate具体指什么?
针对报错的解决方案确认
针对上述报错信息,需明确以下哪种情况正确及对应操作:
- 可修改enhancer.exe.config/venhance.exe.config,具体操作是?
- 是否存在无此问题的新版本Telerik OpenAccess?所需版本是?
- VS2022是64位,是否绝不能基于Telerik OpenAccess构建32位应用?
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

