Visual Studio 2010中参考的DLL无法加载

10

我正在使用VS2010进行C# 4.0项目的开发,并需要使用一些由C# 3.5在VS2008中创建的旧DLL,其中包含控件。当我首次将DLL添加到引用中时,我能够通过智能感知看到命名空间并创建一个控件的实例,但是当我尝试构建时,会出现以下错误:

The type or namespace name 'BCA' could not be found (are you missing a using directive or an assembly reference?)

我已经为该命名空间添加了using指令,但现在它被用红线标出,显示VS找不到它。现在,智能感知完全无法识别该命名空间。

我甚至尝试将这些控件添加到工具箱(成功了),但当我将它们拖到GUI时,它会说找不到DLL引用,即使它显然知道它在哪里。

我甚至尝试将目标框架更改为3.5,但结果仍然相同。

有什么想法是为什么会发生这种情况吗?

编辑 - 我注意到在VS输出的csc.exe参数中,没有任何/reference条目与我正在尝试使用的DLL相关。当我在VS2008中创建相同的基本项目时,这些条目存在。此外,我可以在VS2010中的DLL项目中成功引用DLL...似乎只有WinForms项目无法工作。


这可能是一个显而易见的问题,但是当你最初引用它们时,DLL文件是否肯定仍然在磁盘(或GAC)上的相同位置? - Graham Clark
另一个可能显而易见的原因是,该类型是否在已更新该类型的程序集中?如果是这种情况,.refresh文件可能仍然指向过时的.DLL。 - David Neale
是的,它们肯定没有移动。而且没有任何更新。 - Adam Haile
可能是64位与32位的问题。我目前也遇到了同样的问题,所以我仍在自己努力解决它。 - Rik
有点怀疑...我只能运行32位的Windows XP(我知道,我知道...该死的公司政策) - Adam Haile
4个回答

21

事实证明,这与VS2010默认使用.NET 4 客户端配置文件有关。只要我将其更改为常规配置文件,就可以正常构建了。浪费了一天时间...


2

查看我的项目中的目标框架,它是4.0客户端配置文件,而参考的dll则是4.0版本。


0

我曾经遇到过类似的问题,但是配置文件不是问题所在。实际上问题在于我的类库使用了一个特殊的NuGet包,它有依赖项...所以我在目标项目中安装了依赖包,并添加了项目引用,然后问题就解决了!

但我不确定这个问题是否有更好的解决方法?对我来说,VS应该足够智能,可以将这些dll随着引用一起携带。(我已经验证了"复制到本地"设置为True)


0

我尝试了Build->Clean Solution,然后就可以添加引用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接