Microsoft.Practices.ServiceLocation来自哪里?


75

有人知道哪里Microsoft.Practices.ServiceLocation来的吗?这是MS EnterpriseLibrary中使用的名称空间和dll。诚然,这是一个非常简单的dll,只有几个类(使用反射器),但是我找不到它的已发布源代码。它不在Enterprise Library项目中,也不在Unity项目中。

那么有人知道此源代码是否已发布以及在何处发布?还有为什么它不属于Unity?在其他地方使用吗?


与此问题相关的另一个答案:stackoverflow.com/a/25728456
Believe2014 2014年

Answers:


66

它来自:https : //github.com/unitycontainer/commonservicelocator

从项目描述:

Common Service Locator库包含用于服务位置的共享接口,应用程序和框架开发人员可以参考该接口。该库提供了IoC容器和服务定位器的抽象。使用该库可使应用程序间接访问功能,而无需依赖硬引用。希望是使用该库,第三方应用程序和框架可以开始利用IoC /服务位置,而无需将自己束缚于特定的实现上。

这种抽象是由几个IoC框架实现的,Unity是其中之一。但是,Unity不是该项目的所有者。

例如,通过这种方式StructureMap提供了这些类的实现,因此其他框架(例如来自模式和实践的Prism)可以轻松地与其他IoC框架一起使用,而不必绑定到Unity本身。


1
请注意,不仅Prism而且企业库本身现在都与容器无关,并且可以与其他IoC容器一起运行。
Grigori Melnik

2
我遇到了同样的错误,但是我的机器上安装了Enterprise library 4.1,并且将企业库引用添加到我们的通用解决方案的其他开发人员签入了Enterprise Library版本5。因此,您可能遇到了Enterprise库版本问题。

2
CommonServiceLocator 2.0版不再包含Microsoft.Practices.ServiceLocation。也许它刚刚移动?我将(Nuget)降级为CommonServiceLocator 1.3,项目引用Microsoft.Practices.ServiceLocation又回来了。
srock

7
自CommonServiceLocator 2.0.1起,发生了重大变化。名称空间Microsoft.Practices.ServiceLocation已更改为CommonServiceLocator。@srock,因此无需降级。
鲁巴诺夫

14

如果需要,可以在NuGet这里获取包装:

http://www.nuget.org/packages/CommonServiceLocator/


1
我遇到了原始海报提到的问题。Leniel,我尝试了安装NuGet包CommonServiceLocator的解决方案,但没有解决我的问题。我猜自从您在2013年提到此解决方案以来,情况已经发生了变化。您知道它们有何变化吗?
Rod

1
@Rod:真的不是。我很久以前就遇到了这个错误。不再需要再次使用此库。
Leniel Maccaferri

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.