VS中bin和obj文件引发的问题
2013-11-28 20:44
218 查看
在敲机房收费系统的时候通常都会遇到这个问题:“未能加载文件或程序集“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的图标就会出现变红的现象。
解决该现象的方案:
修改SVN项目权限问题:项目组长修改自己的权限(允许访问所有层)
组长负责将每一层的bin 文件和obj文件移除项目之外。(方法:点击显示所有文件夹图标—>分别右键obj和bin—>选择从项目中排除 )
更新整个项目文件
收回权限
改动代码—>更新文件
当问题出现的时候,不要想着这是属于正常现象。就如,在SVN的使用过程中,发现有的项目图标呈黄色的时候,应该主动的去提问为什么?主动的去发现问题,提问问题,这样再下次遇到同样的事情时,才能够很好的提前去规划问题,让自己少走弯路。
解决方案:
修改将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的图标就会出现变红的现象。
解决该现象的方案:
修改SVN项目权限问题:项目组长修改自己的权限(允许访问所有层)
组长负责将每一层的bin 文件和obj文件移除项目之外。(方法:点击显示所有文件夹图标—>分别右键obj和bin—>选择从项目中排除 )
更新整个项目文件
收回权限
改动代码—>更新文件
当问题出现的时候,不要想着这是属于正常现象。就如,在SVN的使用过程中,发现有的项目图标呈黄色的时候,应该主动的去提问为什么?主动的去发现问题,提问问题,这样再下次遇到同样的事情时,才能够很好的提前去规划问题,让自己少走弯路。
相关文章推荐
- 工作总结 1 sql写法 insert into select from 2 vs中 obj文件和bin文件 3 npoi 模板copy CopySheet 最好先全部Copy完后 再根据生成sheet写数据 4 sheet.CopyRow(rowsindex, rowsindex + x); 5 npoi 复制模板如果出现单元格显示问题
- 解决:在VS上写Qt文件每次都要手动添加include、lib、bin文件的问题
- 关于vs编译后bin下的dll文件重新出现的问题
- 解决VS在编译的时候无法打开...obj文件的问题
- VS 编译提示 无法将“obj\Debug\*.*”复制到“bin\Debug\*.*”,文件...正在由另一个进程使用,因此该进程无法访问此文件 解决办法
- SVN——将VS项目提交至SVN时,怎样忽略bin和obj目录中的文件
- 将VS项目提交至SVN时,怎样忽略bin和obj目录中的文件
- VS调试出现错误提示 无法将“obj\Debug\*.*”复制到“bin\Debug\*.*”,文件正在由另一个进程使用,因此该进程无法访问此文件
- 将VS项目提交至SVN时,怎样忽略bin和obj目录中的文件
- 日志文件在VS中输出为乱码问题
- C/C++ 中头文件相互包含引发的问题
- VS调试C++程序,提示无法启动程序,MSVC\../../bin\caffe.exe系统找不到指定的文件
- windows的文件系统机制引发的PHP路径爆破问题分析
- vs2012中的sdf文件出错问题
- vs 错误1------"无法启动程序'...debug/abc.exe',系统找不到指定文件"的问题!
- winform无法将文件“obj**”复制到“bin**”
- vs项目启动调试时,显示找不到文件问题
- 解决VS调试提示“无法启动程序,'...exe'.系统找不到指定文件。”的问题
- VS.NET中复制ASP.NET文件的问题
- 无法将文件“..\obj\*.dll”复制“..\bin\*.dll”,对路径“..\bin\*.dll”的访问被拒绝