2010-04-14 99 views
1

我試圖評估存儲在數據庫中,即是否可以在.NET 3.5網站項目中使用DLR?

"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功能(因此降級不是選項)。

任何幫助非常感謝。

回答

0

我現在可能會想到複雜的思維,並且存在更簡單的解決方案,但這種想法是可能的;

您是否考慮過使用CodeDom構建一個運行時類,實例化一個對其執行方法(使用表達式作爲其實現,更像是代碼片段而不是純表達式),然後檢索'result'來自該類實例的值通過公共屬性?

1

解決方法是將ForwardAttribte向前鍵入System.Core.dll。我們已經爲IronPython的CodePlex網站上的this bug製作了3個不同版本的組件(針對我們發佈的3個不同版本以及各種IronPython版本)。

您需要下載它們並檢查它們的版本,並替換與您使用的CodePlex版本相匹配的版本。

+0

我是否將dll添加到GAC或程序集?我是否需要一個用於Microsoft.Scripting.Core和Microsoft.Scripting?帶有類型轉發的ExtensionAttribute的源是否可用? – Aplato 2010-04-15 15:58:02

+0

只要你有現有的地方,你就可以取代它。如果您將其放入GAC,請將其替換。你只需要一個 - 它將修復M.S.Core.dll和M.S.dll。 來源是不是很有趣,它只是: [裝配:TypeForwardedTo(typeof運算(ExtensionAttribute))] 並具有referene到System.Core程序。 – 2010-04-16 01:58:32

相關問題