急救:三个项目A、B、C,A引用B和C,B引用C。编译时老出错。如何解决?急急急!!!

bigyu7 2002-08-18 04:42:59
在vs.net下的解决方案中有三个项目:ClassLibraby、WebControls、WebUI。在WebControls中引用了ClassLibraby;在WebUI中引用了ClassLibraby和WebControls。

在编译WebUI时老提示有CS0234错误:类型或命名空间名称“ClassLibraby”在类或命名空间中不存在(是否缺少程序集引用?)。但我在项目中确实加入了ClassLibraby的引用!!另外有意思的是:在debug版本的编译时,如出现该错误时只要关闭解决方案两次再编译就ok了,但在release时却行不通。

后来发现在编译ClassLibraby时无法删除项目输出,也就是老ClassLibraby.dll被其他程序打开而无法被覆盖。如果从其他两个项目中删除对ClassLibraby的引用再单独编译ClassLibraby则会成功。

有谁遇到过同样的问题吗?是vs.net的bug? 如何解决?
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigyu7 2002-08-22
  • 打赏
  • 举报
回复
不是这个原因!!
我用的是项目引用而不是直接引用dll,项目间的依赖关系和项目生成顺序也正确。实际上只要是从项目引用,vs.net会自动建立依赖关系和生成顺序。但就是出错呵!
我发现vs.net确实能自动处理编译顺序,但问题是在编译被引用项目成功后保存dll文件时vs.net的其他线程还在打开该dll,以至保存dll文件失败。
我现在只能手工删除bin下的.dll文件,而且在删除前要先删除对该项目的引用,否则也会因为该dll在打开状态而无法删除。
我没有其他选择,除非将三个项目合而为一。真是烦啊!
qqchen79 2002-08-22
  • 打赏
  • 举报
回复
正确建立Project之间的Dependency关系(Project菜单 -> Project Dependencies)。
然后Add Reference的时候,不是直接引用dll,而是从第三个TAB的Projects中选取。
这样vs.net就会自动处理其他的诸如编译顺序等了。
bigyu7 2002-08-20
  • 打赏
  • 举报
回复
手工删除bin下的.dll文件是可以,就是太麻妨!还有没有其他能彻底解决的办法?我想vs.net不至于这样蠢吧?!
dreammaster 2002-08-18
  • 打赏
  • 举报
回复
我也遇到过这个问题,删除bin下的.dll文件,再重新build整个解决方案。
Muf 2002-08-18
  • 打赏
  • 举报
回复
mark...

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧