一个做法是给一个解决方案一个ComDLL的目录,把有版本问题的DLL都放入这个目录中,并加入解决方案、check in到VSS中,解决方案中所有的项目引用都引用这个目录下的DLL,这样,即使不同的系统也不会有问题了。
.net 网站项目dll引用,项目引用的管理问题 收藏
一般大一点的程序
为了增强程序的可复用性,多将各个逻辑上独立的模块独立出来做为一个单独的项目来管理
一般的为了方便管理项目都把项目生成dll文件然后再引用,这样的好处是
一,源代码安全可以管理
二,程序的独立性更好一点
三.可单独发布dll文件
但是当一个程序越做越大的时候就会发现独立的项目越来越多,dll引用成了一个很大的问题.
大家知道类库项目添加dll引用只要选择一次,下次就可以自动到引用目录中查找同名dll文件
所以类库项目添加dll引用以后就不需要管理了,项目会根据dll文件的改变而自动更新引用!
(注意,类库生成路径要统一写成Z:\bin\dllname.dll 这个样子,前面必须带盘符否则嵌入源代码管理后,别人获取后会改成相对路径的,这样就不对了!必须要写盘符哦最好生成路径和源代码不要放到一个盘中)
以后添加引用都到z:\bin文件夹下添加就都统一了!
但是网站项目的dll引用就不一样了
所有的dll都需要放到bin文件夹下!
假设我有一个网站项目,很大下面分了很多个子网站.
这样的话每个子网站下都需要建立一个bin文件夹,如果有源代码修改过并重新生成dll
这样每个bin文件夹下都需要重新复制一份新的dll文件!
如果是一个网站还好,多个的话那就完了!改一次代码每个网站下都要重新复制一遍.每次找dll都累死人!还谈什么工作
所以为了解决这个问题,我思考了很久.想到了两个方案,
第一个是做一个文件复制工具.监测文件改动自动把改动过的dll复制到每个bin文件夹下
东西也确实做出来了!效果还可以!不过复制起来有点慢!还会出现把*.tmp文件也复制的情况!
还有一种方案更简单更省事!
就是使用符号链接
可能很多人不知道什么是符号链接.可以自己百度一下
具体的思路就是把每个网站下的bin文件夹映射到z:\bin目录.
这样只要修改z:\bin文件夹内的dll其他网站下的bin文件就自动的都改了.因为其实是同一个文件夹
建立符号链接有个工具叫junction.exe
为了方便管理免得每次都重新建立符号链接自己做了一个批处理
到http://download.csdn.net/source/2600862下载
代码如下:
junction "E:\projects\GM\GMSaasBan\View\dcs\bin" "d:\wmb_bin\wmb_bin"
junction "E:\projects\GM\GMSaasBan\View\crm\bin" "d:\wmb_bin\wmb_bin"
junction "E:\projects\GM\GMSaasBan\View\dms\bin" "d:\wmb_bin\wmb_bin"
junction "E:\projects\GM\GMSaasBan\View\erp\bin" "d:\wmb_bin\wmb_bin"
junction "E:\projects\GM\GMSaasBan\View\fms\bin" "d:\wmb_bin\wmb_bin"
这样只要替换目录就可以自动的设置符号链接了
注意:
1.像E:\projects\GM\GMSaasBan\View\dcs\bin前面的源路径映射到目的路径d:\wmb_bin\wmb_bin的时候
每个网站的bin目录之中必须为空,否则会建立符号链接失败.有的即便空了也会失败,
2.映射物理路径中不能包含中文哦!否则建立会失败的
3.有的时候还是建立不成功的话,删掉目录重新建个bin目录再符号链接基本上就可以了
好了.各位只要源代码重新生成以下.或者dll改动一下.各个映射过的网站bin会自动更新dll引用的!
至此我相信各位的dll引用问题基本都已经解决了吧!
最后还有一个小技巧和大家分享一下.
如果你的网站项目需要vss管理源代码的话.记得把网站下的bin文件夹属性设为隐藏哦!同理只要不想让vss管理的文件夹,将其属性设为隐藏就可以了!
设为隐藏以后就不会收到vss的管理了!而且网站还可以正常运行,不受影响!
这回不用再头疼签出时一大堆提示签出*.dll文件了吧!
这个小技巧很多人不知道.拿出来大家分享!
支持的人多多推荐.我还有很多小技巧和大家分享哦!
还有junction 符号链接可以重复执行哦!不会影响使用的
还有符号链接是否建立成功是可以查看的哦!有个工具叫NTFSLinksView
到http://download.csdn.net/source/2600855下载
分享到:
相关推荐
api-ms-win-crt-runtime-l1-1-0.dll 丢失,通过本程序便可以解决,不要相信网上的其他的解决方案,真的不好用,这个也是我找了好久,绝对好用,凭良心,当时也是在解决Python安装的时候遇到的问题,这种问题我遇到了...
网上关于Python安装Opencv总是出现DLL Load Filed问题的解决方法,本人亲测无法解决问题,于是探索了一种新的解决方法,先对所有现存方法以及本人方法进行汇总,希望对大家有所帮助: 网上现存的几种问题与解决方法...
解决方案: 请C++同事帮忙写个dll程序,dll去解析开发平台输出的二进制流数据,上层应用平台调用dll得到json报文,然后再去做一些业务处理。 那现在上层应用面临的问题:访问java外部功能接口实现方式(即调用dll)...
电脑变慢de完全解决方案 一、软件篇 1、设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取...
方法是将相关的9个oracle客户端文件与所发布的应用程序放在一个目录同时打包,安装后不需要配置一起环境变量就可以OK了,唯一需要修改的是tnsnames.ora文件中的服务器配置。 因此出只能最大上载15M的资源,故...
第一步:首先将msvcr71.dll, SQLDMO.DLL, Resources\2052\sqldmo.rll,Resources\1033\sqldmo.rll 拷贝到C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录。 第二步:打开开始,在运行中输入 regsvr32 "C:\...
《VC++通用GIS功能开发解决方案》源代码是迄今为止公开提供的最全面、最完善的开发GIS产品的一套基础解决方案。它的界面十分友好和具人性化,它传承了“VC++界面一揽子解决方案”(http://summerplq.51.net)最具...
部署水晶报表时的常见问题及解决方案
对于这个问题有两个解决方案: 使用myodbc驱动程序。 你可以到www.mysql.com下载myodbc驱动程序,然后照着下面的做就可以了第一种选择是下载完全安装包,这种包很大,但对于我们来说有用的只有myodbc.dll这个文件...
据我所知,我已经重新创建了Jesse概述的每个步骤,然后在Mario的解决方案中进行了文档记录和混合,以使基于工作的简单对话框的MFC应用程序转换为DLL,并由另一个程序调用。 每个步骤都是一个提交,因此其他步骤可以...
因为之前实习遇到这个问题,我没有做好记录,最近又有同事遇到,问我,然后我就要重新搜索解决这个问题,所以现在就写成博客,做好记录。 步骤: 1.去...
如果是jre-x64那么对应的就需要jacob-1.18-x64.dll安装了最新完整的WPS2016发生错误,无法将doc文档转换成pdf文件。FamilyI
需要dll的完整源代码见我上传的另外一个资源下载。 代码已经调试通过,如果访问网络资源超时有可能出现 "其他信息: CLR无法从COM上下文0x211c88转换为COM上下文0x211b18,这种状态已持续60秒。拥有目标上下文/单元...
DLL地狱及其解决方案 ,Dll Hell Solution,此为测试Demo 原文地址:https://www.codeproject.com/Articles/4896/The-DLL-Hell-Problems-and-Solutions#_articleTop
-修正extjs最新版本(v3.2.2)中的一个bug,如果下拉列表中存在两个相同的Text,则SelectedValue返回值永远是第一个Text的值(feedback:ben.zhou)。 -应用补丁#6593, #6621(feedback:vbelyaev)。 +修正IE7下Grid分页...
点击Visual Studio 2008菜单“生成->配配置管理器-活动解决方案配置-Release-NTS-关闭”–>“生成->生成eAccelerator” OK,这时候你会发现C:/phpsrc/ext/eaccelerator/win32/Release里面已经生成了一个...
一个小巧而又十分强大的Excel加载项(插件)---OBS.DLL,大小1M左右,却能突破微软的技术壁垒,打破Excel的常规应用模式,开辟了Excel的另类应用空间。加载后新增一个"OBS"工具条,适用于Excel2002及以上版本,推荐在...
方案二: 使用C++编写一个node addon,通过LoadLibrary调用dll 以上两种方案都可以解决dll调用问题,方案选型要个人对C++ 的掌握程度,如果熟悉C++开发,可以直接选择方案二最方便。如果完全不了解C++,那么只能...