VS中bin和obj文件引发的问题

   在敲机房收费系统的时候通常都会遇到这个问题:“未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件”。

    解决方案: 

    修改将DAL的输出目录 修改到UI/bin/Debug 。


一、引用路径问题: 

    DAL的默认输出目录是在DAL/bin/Debug 目录之下,为什么要修改它的输出目录呢?在说到这个问题上的时候,我们还得先来了解一下什么是引用关系。 


 



    在传统的三层中,引用关系:UI—>BLL—>DAL ,引用也就是相当于是自己的。例如UI层引用了BLL层,那么UI层对于BLL层中公有的东就都可以随便用,所以在生成目录的时候,BLL层生产的Dll文件就应该是包含在UI层中。同理,DAL层通过引用也包含在UI层中。

    由上面的图我们可以看出,UI层并没有间接的引用DAL层,所以在生成程序集的时候,UI层的bin文件目录下并不存在DAL的程序集。


二、 bin目录 & obj 目录

    总的来说:Bin是放最终代码的文件,Obj是放中间代码(临时)的文件 。

1.bin目录存放最终编译的结果,它是二进制binary的英文缩写。   

     Bin 是默认情况下的输出文件目录,也就是你工程编译的结果(dll或者exe),也包括其他你设置了需要输出的文件,比如:配置,资源文件等内容。 

    Bin文件有两个版本Debug和Release两个版本,分别对应的文件夹为bin/Debug 和bin/Release,这个文件夹是默认的输出路径,我们可以通过项目属性—>编译—>生成输出路径进行修改。 


2.obj 目录是用来存放编译过程中生成的临时文件,它是Object的英文缩写。  

    obj目录是用来保存每个模块编译的结果,在.Net中,编译是分模块进行的,编译整个完成会合并为一个.DLL或EXE保存到bin目录下。


    在添加引用时,.NET会记录添加的引用绝对路径,这些设置保存在“每用户”文件中,(Solution.csproj.user),可以通过记事本打开查看。也可以在:项目属性—>通用属性—>引用路径里面查看。如果设置复制到本地为true,在生成项目时会自动拷贝该DLL到项目生成文件夹中(bin目录),否则不会拷贝。在生成项目时,对所添加的引用的是绝对路径,而在运行时程序集默认只在当前所在的路径下去找。要修改引用的路径,必须通过编程的方法去实现。使用References 对象。


    obj 文件是编译时的中间目录,也就是说在Bin中的内容出现之前,编译器是在这里进行一些文件创建,修改等工作的。等全部完成之后才复制到Bin目录中。(注意,此时obj的内容不会被清除)


三、SVN管理问题

   项目开发如果是分层开发,每个人负责一层(B层,U层,D层)等。并且对每一层进行权限的分配。如果不注意SVN的使用,SVN就会出现下面的现象: 


   每天早上过来打开VS的项目都会是下面的结果: 

   出现的原因主要是我们前面说的两个文件在捣鼓—> obj和bin 文件是随系统,随个人实时更新的。 所以我们再更新的时候,由于权限的问题导致,我们无法提交更新了的文件,所以SVN的图标就会出现变红的现象。 

   解决该现象的方案:

    1. 修改SVN项目权限问题:项目组长修改自己的权限(允许访问所有层)  
    2. 组长负责将每一层的bin 文件和obj文件移除项目之外。(方法:点击显示所有文件夹图标—>分别右键obj和bin—>选择从项目中排除 )
    3. 更新整个项目文件
    4. 收回权限 
    5. 改动代码—>更新文件
   当问题出现的时候,不要想着这是属于正常现象。就如,在SVN的使用过程中,发现有的项目图标呈黄色的时候,应该主动的去提问为什么?主动的去发现问题,提问问题,这样再下次遇到同样的事情时,才能够很好的提前去规划问题,让自己少走弯路。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值