C# 调试LogicalBinaryExpression与BinaryExpression的奇怪问题

C# 调试LogicalBinaryExpression与BinaryExpression的奇怪问题,c#,linq,lambda,expression,C#,Linq,Lambda,Expression,长话短说,我有一个方法,我把一个表达式作为参数,这个参数是一个Linq表达式 问题是当从VS调试时,表达式的GetType().Name返回BinaryExpression,一切正常。但是在应用程序的部署版本(仍然部署在我的开发机器上)中,相同的调用返回LogicalBinaryExpression,这会导致问题 是否有特定的dll或需要更新/更改的内容?有人知道为什么即使是同一台机器和同一个dll,行为也会改变吗?结果表明,问题是在VS中,应用程序池框架设置为2.0,而我的应用程序的实际IIS

长话短说,我有一个方法,我把一个
表达式
作为参数,这个参数是一个
Linq
表达式

问题是当从VS调试时,表达式的
GetType().Name
返回
BinaryExpression
,一切正常。但是在应用程序的部署版本(仍然部署在我的开发机器上)中,相同的调用返回
LogicalBinaryExpression
,这会导致问题


是否有特定的dll或需要更新/更改的内容?有人知道为什么即使是同一台机器和同一个dll,行为也会改变吗?

结果表明,问题是在VS中,应用程序池框架设置为2.0,而我的应用程序的实际IIS应用程序池设置为4.0


在两种环境中进行调试时,通过设置断点并在即时窗口中调用
GetType().Assembly
找到。他们在GAC中返回了同一dll的不同版本。

如何创建表达式?你想用它做什么?首先,您可能不应该使用这样的类型名称。听起来调试库是不同的。为什么这对您来说是个问题?您是否考虑过在分析表达式时使用
ExpressionType
(),而不是实例类型的名称?它更有可能在不同的场景中保持一致。