2012-09-18 50 views
2

我正試圖在可移植類庫中使用.NET 4的動態類型,但我無法獲得所有必需的引用。我可以引用System.Core,但是Microsoft.CSharp給我帶來一些麻煩。看來我需要添加所有不同版本的Microsoft.CSharp.dll作爲我的項目的引用,但Visual Studio允許我只添加一個;如果我添加另一個,我得到一個錯誤,說它已經被引用。我不能與他們的只是一個編譯,但 - 如果我引用Windows的一個,我得到:如何在便攜式類庫中引用Microsoft.CSharp?

缺少的編譯器所需的成員「Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember」

當我嘗試建立項目。如果我引用了Silverlight,那麼由於某種原因,該引用似乎無效 - 它在解決方案資源管理器的引用列表中有一個黃色警告圖標!

那麼,有什麼辦法可以參考這兩個DLL的而不會破壞我的項目或將其轉換到非移植庫?

謝謝!

回答

3

您不能創建使用在.NET 4.0中的dynamic keyword便攜庫。

Support for dynamic types in portable libraries was added in .NET 4.5

在.NET 4.0中,你將不得不訴諸使用反射,以使該你想(如果你不能升級到4.5)的電話。

+0

哇,認真嗎?我認爲便攜庫只是一種便利,而不是需要新框架代碼的特殊類型的庫... – ekolis

+0

@ekolis並不是說它需要新的框架代碼,而是便攜庫是允許有限數量的引用的庫。使用'dynamic',它需要額外的程序集,可能必須經過審查以適合可移植性(和*某些*框架代碼,但不是一噸)。 – casperOne

+0

嗯,所以沒有辦法構建一個「半便攜式」庫,其中包含大部分需要的內容,並引用完成它所需的特殊位。 – ekolis