C# 使用引用第二个程序集的程序集,而不引用该程序集

C# 使用引用第二个程序集的程序集,而不引用该程序集,c#,C#,我有一个我写过的各种随机扩展方法的小库。最近,我在其中加入了一些WPFFrameworkElement扩展方法,但发现自己在使用我的库的另一个项目(控制台应用程序)中出现了编译器错误,因为现在它需要引用几个与WPF相关的程序集(找不到FrameworkElement等)。此项目不调用任何涉及FrameworkElement的方法 随着扩展方法库的增长,我希望我不必将它分解成几个小程序集,也不希望在非WPF项目中添加对WPF程序集的大量引用。有没有办法处理这件事,还是我得把我的图书馆拆散 我将VS

我有一个我写过的各种随机扩展方法的小库。最近,我在其中加入了一些WPF
FrameworkElement
扩展方法,但发现自己在使用我的库的另一个项目(控制台应用程序)中出现了编译器错误,因为现在它需要引用几个与WPF相关的程序集(找不到FrameworkElement等)。此项目不调用任何涉及
FrameworkElement
的方法

随着扩展方法库的增长,我希望我不必将它分解成几个小程序集,也不希望在非WPF项目中添加对WPF程序集的大量引用。有没有办法处理这件事,还是我得把我的图书馆拆散


我将VS2013与.NET 4.5一起使用,结果表明,您可以通过将有问题的类型放在不同的名称空间中来实现这一点。我所有的扩展方法都在相同的
Common.Extensions
命名空间中,这显然会导致加载该命名空间中的所有内容。通过将特定于WPF的扩展移到
Common.WPF.extensions
中,我能够将它们全部保存在同一个程序集中

更新:

此错误的具体原因归结为一个扩展方法中包含的面向公共的类型。事实证明,对于没有引用的类型,可以有一个扩展方法,但这些方法都不能有使用未引用类型的参数、返回或类型声明。就我而言,我有

public static void SetParentCursor<T>(this FrameworkElement frameworkElement, Cursor cursor) where T : FrameworkElement
public static void SetParentCursor(此FrameworkElement FrameworkElement,光标光标),其中T:FrameworkElement

where T:FrameworkElement
最终杀死了它。

您使用的是哪个版本的VS?不太相关,您使用的是哪个版本的.NET?@Eric VS 2013和.NET 4.5为什么不为WPF编写一个单独的程序集呢?最好将事情分开:您不需要为不必要的事情加载太多内存,…这里只是猜测一下,您是否针对两个项目的相同框架?我还记得有一个设置来向前推进依赖关系,但它是C++的。我想,当我启动这个库时,它最初被分成了两个部分,但后来我担心它会增长,最终我不得不使用语句向我想要使用所有扩展方法的任何代码文件添加六条
。我的一些同事也使用它,我希望通过只使用一个来猜测他们需要引用哪个程序集。