为什么添加项目引用会破坏我的构建?

时间:2008-11-02 19:09:24

标签: .net

解决方案结构[Plain Winforms + VS 2008 Express Edition]

  • CoffeeMakerInterface(NS CoffeeMaker)
  • CoffeeMakerSoftware(NS CoffeeMakerSoftware)
  • TestCoffeeMaker(NS TestCoffeeMaker)

CoffeeMakerSoftware项目引用了CoffeeMakerInterface。 TestCoffeeMaker项目引用了CoffeeMakerInterface和CoffeeMakerSoftware。

现在让我疯狂的事情。我无法建立这个。 如果我从TestCoffeeMaker中删除CoffeeMakerSoftware项目引用它构建(?? !!)..一旦我添加第二个项目引用,它就会抛出构建错误声称在第一个引用中声明的类型'不能被发现..你错过了一个大会参考'

起初我有前2个程序集具有相同的名称空间Cof​​feeMaker ..然后我使它们不同(虽然我认为在程序集中应该有可能属于相同NS的类)但是即使这样也不是它

呼唤更多眼球。任何指针..

2 个答案:

答案 0 :(得分:1)

我打破了'当你累了时不要编码'的格言。我把它拉上拉链,睡觉然后今天看了看..通过查看输出窗口找到了问题。 (FWIW所有内容都是CopyLocal = True而GAC中没有任何内容。这是来自Agile PPnP书籍的Bob Martin的OOD问题..提出好名字特别困难)

1. CoffeeMaker > CoffeeMakerInterfaces
2. [X]         > CoffeeMaker            > CoffeeMakerSoftware
3. [X]         > TestCoffeeMaker

这就是我按时间顺序添加和重命名项目的方式。显然,通过解决方案资源管理器重命名程序集,不会更改生成的二进制文件的名称或发出警告。结果,#1和#2都生成了CoffeeMaker.dll作为输出。 将参考文献#2添加到TestCoffeeMaker中,将参考文献#1中定义的所有类型都视为未知,并且流行

  

“错误2类型或命名空间名称   无法找到'CoffeeMaker'(是   你错过了使用指令或   汇编参考?)C:\ Documents and   Settings \ pillaigi \ Desktop \ CoffeeMaker \ TestCoffeeMaker \ FakeCoffeeMakerDevice.cs 4 7 TestCoffeeMaker“

解决方案:打开项目属性并检查每个(参考或其他)项目的项目属性中的“程序集名称:”是否唯一且不会发生冲突。

也许没有足够的人这样做.. IDE或编译器可以很容易地抓住这个'如果被引用的程序集具有相同的二进制名称...请修复它...你会反正' 我曾经对自己这样做过一次......这次给自己做了一个大笔记。现在请原谅我戴着我的Dunce帽子并坐在角落里。

答案 1 :(得分:0)

要检查的一些事项:

  • 确保所有项目参考的“copy local”为TRUE
  • 如果有任何设置为false,请检查GAC是否存在库的旧版本

如果所有这些都失败,请从解决方案中删除所有项目,创建新解决方案并重新添加项目。是的,这是伏都教,但这让我过去经历过愚蠢的错误。 ; - )