是否可以在.NET 3.5网站项目中使用DLR?

时间:2010-04-14 19:35:43

标签: c# asp.net web dynamic-language-runtime

我正在尝试评估存储在数据库中的表达式,即

"if (Q1 ==2) {result = 3.1;} elseif (Q1 ==3){result=4.1;} else result = 5.9;"

我不是自己解析它而是尝试使用DLR。我正在使用Codeplex存储库中的.92版本,我的解决方案是.NET 3.5网站;我在System.Core和Microsoft.Scripting.ExtenstionAttribute .dll之间存在冲突。

Error =
{
  Description: "'ExtensionAttribute' is ambiguous in the namespace 'System.Runtime.CompilerServices'.", 
  File: "InternalXmlHelper.vb"
}

此时我无法升级到.NET 4.0并大量使用.net 3.5功能(因此降级不是一种选择)。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

解决方案是将ExtensionAttribte键入System.Core.dll。我们已经为这个程序集制作了3个不同的版本(我们已经发布了3个与各种IronPython版本不同的版本),并在IronPython的CodePlex网站的this bug上附加了它们。

您需要下载它们并检查它们上的版本,并替换与您正在使用的CodePlex版本中的版本相匹配的版本。

答案 1 :(得分:0)

我现在可能会进行复杂的思考,并且存在更简单的解决方案,但这种可能性在我脑海中浮现;

您是否考虑使用CodeDom构建运行时类,实例化一个,在其上执行一个方法(表达式作为其实现,更像是代码片段而不是纯表达式),然后检索“结果”值从该类实例通过公共财产?