程序集引用解析为与指定路径不同的路径

时间:2011-12-26 13:42:07

标签: c# .net windows dll

我正在尝试在我的c#项目程序集中引用Oracle.DataAccess.dll。运行项目时,我收到以下错误:

  

无法加载文件或程序集'Oracle.DataAccess,Version = 2.112.2.50,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

我真的很困惑,因为当我右键单击引用并添加一个程序集时,我导航到我在项目中包含的文件夹中的dll副本并添加引用。但是,当我查看引用的属性时,它会显示

的路径
  

C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ Oracle.DataAccess.dll

并且确实在那里有一个名字,但它是旧版本。为什么这个引用不指向我在添加它时指定的路径,如何让它在我指定的位置使用dll?

2 个答案:

答案 0 :(得分:3)

当我们知道特定版本与构建的应用程序无关时,我们会采取一些步骤来解决此类问题:

1)在项目中的引用属性中,确保将Specific Version属性设置为False。

2)保存项目,将其编辑到记事本或您选择的文本编辑器中。找到DLL引用并删除所有版本和密钥信息,并确保提示路径指向您的文件副本。例如:

<Reference Include="Oracle.DataAccess">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\Assemblies\Oracle.DataAccess.dll</HintPath>
</Reference>

答案 1 :(得分:2)

Visual Studio在引用方面可能有点不稳定。很多时候我们必须直接编辑项目文件。直接设置参考的属性并不总是坚持。右键单击项目,选择“编辑项目文件”,然后在其中进行更改。它应该坚持下去。