我希望其他人遇到这个因为它让我感到沮丧。
我最近买了一台新笔记本电脑,所以我一直在设置我的旧机器保存的Visual Studio解决方案(带有.NET 4.0的VS2010)。其中一个是一个简单的控制台应用程序,我用它来模拟一些测试的东西。它引用了我现在正在处理的另一个解决方案中的2个程序集。这一切都按预期工作正常,但自从移动到新机器后,我得到了可怕的“无法找到类型或命名空间名称'YourAssembly'(您是否缺少using指令或程序集引用?”错误消息。引用在Visual Studio中清晰显示,但是当项目构建时,它不会将它们复制到解释该消息的bin目录。最初我只是像第三方dll一样引用dll但我甚至尝试删除它并包括我的解决方案中的项目文件并以这种方式引用它们仍然失败。我已经验证了dll的'Copy Local'属性设置为true而且它们确实存在。它真的很奇怪,因为该项目引用了其他几个dll第三方程序集(例如NLog,GData等)和那些都复制得很好而不是这两个因为某些奇怪的原因。
这是另一件奇怪的事情。如果我将一些代码添加到引用我的程序集的控制台应用程序,它说它无法找到它。如果我然后重新添加程序集到引用,错误消失,直到我尝试再次构建它然后它返回。这是一个VS bug还是什么?我以前从未见过这种奇怪的行为。
感谢
答案 0 :(得分:1)
我见过的一个案例引起了你所谈论的问题:
包含对内部构建的dll的引用,链接到特定版本的dll。获取dll的新副本(具有不同的版本号)和构建中断。
这种情况下的解决方案是将DLL引用属性Specific Version
设置为false。 dll的版本被忽略(在我的例子中,忽略它是安全的),并且构建工作正常。
答案 1 :(得分:1)
答案 2 :(得分:1)
汉斯有上面的答案,但我无法通过搜索找到这个帖子,所以希望如果你偶然发现这个问题,我可以为你节省几个小时的挫折感。
出于某些奇怪的原因,“目标框架”默认为项目属性中的“.NET Framework 4 - Client Profile”。我仔细检查过,每当我创建一个新的控制台应用程序时,它似乎都会这样做。它必须是VS中与版本相关的东西,因为我之前在2010年没遇到过这个问题。
修复: