2012-09-18 25 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