无法加载文件或程序集'Castle.DynamicProxy2,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'

时间:2010-10-21 19:14:01

标签: .net nhibernate fluent-nhibernate castle

我正在使用Microsoft Visual Studio 2010.我开始使用FluentNHibernate 1.1。在configuration.BuildSessionFactory()执行后,我有异常。

Message "Could not load file or assembly 'Castle.DynamicProxy2, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies.

Castle.DynamicProxy2出现在项目引用中,版本是正确的。此组件也存在于构建路径中。我无法解决这个问题...

P.S。我尝试获得FluentNHibernate的最新版本,在我的项目中使用程序集进行构建和运行。我有同样的错误。

2 个答案:

答案 0 :(得分:0)

可能是因为您定位框架4.0并且Castle程序集编译为2.0。

您可以尝试将其添加到<configuration />元素内的app.config中,以便在运行时允许混合版本:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

答案 1 :(得分:0)

您说项目中存在对Castle.DynamicProxy2的引用,并且版本正确。你验证了它的文件路径,它是否正确?

MSVS存在一个与参考路径有关的小问题。引用程序集后,如果编译了项目,则会在输出目录中创建此程序集的副本。通常,其引用路径会自动更改为指向此输出目录。然后,如果你清理了什么,你的文件就不再存在于预期的位置,并导致这种错误信息。

要解决此问题,您需要删除对有问题的程序集的引用,并将其再次添加为项目的引用。

另一种简单的方法是在项目属性中为每个项目设置引用路径。不幸的是,您需要为每个项目设置它们,因此您的解决方案具有多次项目计数。此外,您的团队的每个程序员也会这样做,因为这些设置保存在本地计算机上,并且不会在项目设置中部署,例如参数。