我有两个项目A和B.项目A在项目B中使用了类型X,所以我在A中添加了对B的引用。一切都很好。
我使用强名称密钥文件签署了项目B.一切都还不错。
然后我决定更改B的强名称密钥文件。我重建了项目B ok。当我尝试构建项目AI时收到错误“错误1类型X在未引用的程序集中定义。您必须添加对程序集B的引用,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 95b41b0d6571627b'。 “
所以我删除了项目A中的引用并将其重新添加回来,没有任何乐趣。我可以dbl点击项目A中的项目B引用,打开对象浏览器并在那里看到类型X确定。我也完全限定了A中的X型对象,而intellisense对它们进行了很好的检测,但它仍然没有构建。
我认为更改密钥文件我可能需要修改版本,因此我将程序集B版本更改为2.0.0.0但仍抱怨它需要版本1.0.0.0。查看A中B引用的属性,它肯定指向正确的版本,实际上它显示为2.0.0.0
我可以使用现有的密钥文件,但如果可能的话,我想了解我的错误。
答案 0 :(得分:4)
根据你在评论中所说的内容,我会说这绝对与项目A有关。
也许这些步骤有助于解决问题:
删除对项目的所有引用后,按照建议的瓶颈重新加载项目,看看是否能为您修复它。
答案 1 :(得分:1)
对不起,迟到的回答,但这对我有所帮助:
(假设您目前拥有AnyCPU解决方案平台)
答案 2 :(得分:0)
您可以尝试编辑项目A的项目文件(projectA.csproj)。要通过visual studio执行此操作,请右键单击project-> unload项目,然后在卸载的项目上单击右键单击>编辑文件。在那里搜索对项目B的引用,并尝试根据需要进行更正
答案 3 :(得分:0)
如果x继承A,则必须在B
中引用它答案 4 :(得分:0)
对我有用的是删除对项目的引用,然后再将其重新添加。出现了一条新的错误消息,指出我需要引用缺少的第三个库,因此原始消息有点误导!
答案 5 :(得分:0)
为了帮助人们从Google访问,Merlyn's comment询问延迟签名是我的答案。
我得到了这个错误,引用了延迟签名的程序集A,该程序集引用了程序集B中定义的类型X.我得到了B未被引用的错误(我已经引用了B的签名版本)。
修复方法是查找并引用A的签名版本。
答案 6 :(得分:0)
这也发生在我身上。
在我的情况下,问题是从解决方案A引用了解决方案B的项目(我从B更改了项目的名称)。当我尝试编译A时,它试图在B中找到项目的旧名称。
我再次添加了该项目的新参考,重新编译等等,但是希望它没有用。
当我在A中再次添加B的所有引用时,此问题已解决。我正在加载用B的旧项目编译的旧DLL。这些DLL与旧引用有某种交叉交互作用。
我希望这项工作对别人有用。