在Unity.MVC4或Unity(3.0)中找不到PerRequestLifetimeManager类

时间:2013-12-25 01:49:55

标签: c# asp.net-mvc-4 unity-container

我正在尝试找到PerRequestLifetimeManager。在MSDN中,it says that it is part of the Unity 3 assembly.

我已经通过Nuget安装了Unity.Mvc4。 package.config说我正在使用Unity 3.0:

enter image description here

Microsoft.Practices.Unity.dll 表示我使用的是Unity 3.0

enter image description here

我使用对象浏览器查看了DLL内部, PerRequestLifetimeManager 无法找到。

我在这里错过了什么吗?

如果有人会建议替代课程,我打算使用自定义的PerRequestLifetimeManager here(如果我找不到该课程)。

修改

我已经卸载了Unity.Mvc4并直接在包控制台中安装了Unity3.0,这是我得到的:

PM> Install-Package Unity -version 3.0.1304.1
'Unity 3.0.1304.1' already installed.
Successfully added 'Unity 3.0.1304.1' to RedLions.Presentation.Web.

我仍然无法找到PerRequestLifetimeManager类,即使在官方库中也是如此。

3 个答案:

答案 0 :(得分:26)

当我自己做这件事时,回答我自己的问题似乎不太好。我再也无法删除我的问题了。

无论如何,这是我的解决方案。

我直接看到Unity的源代码,我发现类确实存在在同一个命名空间中但不在同一个程序集中。 PerRequestLifetimeManager位于 Microsoft.Practices.Unity.Mvc

enter image description here

我检查了MSDN,它 说它在一个不同的DLL中,我没注意到。对不起。

它不是nuget中Unity包的一部分,但是在Nuget(Unity.Mvc)的另一个包中,所以这里是:http://www.nuget.org/packages/Unity.Mvc/

我决定转发Unity.Mvc4,因为它不再需要,所有内容都已经在Unity.Mvc中了。 (App_Start / UnityConfig.cs)

答案 1 :(得分:1)

您可以删除原始DLLS并卸载重新安装。

答案 2 :(得分:1)

从PCM,程序包管理器控制台运行以下命令:

Install-Package Unity.Mvc

这将为您提供DLL Microsoft.Practices.Unity.Mvc所在的位置。