我在我的应用程序中定义了一些Expression变量,需要引用Microsoft.Scripting.Core。该程序集包含与主.Net框架中的System.Core程序集相同的名称空间。
我想使用System.Core程序集中的定义,因为它是稳定的,而Microsoft.Scripting.Core是alpha。
如何告诉我的应用程序优先使用System.Core中的System.Linq.Expressions命名空间而不是Microsoft.Scripting.Core,但仍然可以保留对它的引用?
答案 0 :(得分:1)
如果它们是相同的命名空间但是不同的程序集,那么您可能需要查看“extern别名”,但这会很快变得非常混乱。
如果它们是不同的命名空间,那么只需使用不同的using
指令;您也可以使用using
别名。但是,lambdas将始终(AFAIK)使用原始命名空间。
答案 1 :(得分:1)
正如Marc所说,它并不是非常好 - 但外部别名是要走的路。
在解决方案资源管理器的“参考”部分中,选择System.Core
程序集,转到属性。将“别名”属性更改为包含“syscore”,例如
Aliases: global,syscore
然后,在要使用System.Linq.Expressions
的任何文件的顶部,键入:
extern alias syscore;
using syscore::System.Linq.Expressions;
这很难看,但至少有可能:)
作为一个警告,我在扩展方法和外部别名as described in this question时遇到了一些问题。