一个做法是给一个解决方案一个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下载
分享到:
相关推荐
解决方案(Solution)是一种容器,用于存放多个项目,每个项目实现不同的功能,最后将这些项目组合起来,形成一个完整的解决方案。一个解决方案可以包含多个项目,每个项目都是一个独立的实体,可以是控制台应用程序...
2. **手动复制DLL文件**:从可靠的源获取缺失的dll文件,并将其复制到系统目录(如C:\Windows\System32)或应用程序的执行目录。但这仅仅是临时解决方案,因为其他依赖于相同库的程序可能会出现问题。 在你的情况下...
项目解决方案演示.rar"揭示了这是一个关于Delphi编程的项目,重点在于如何在EXE(可执行文件)、BPL(Delphi库包)和DLL(动态链接库)之间建立接口。项目解决方案通常是指为解决特定软件开发问题而设计的一系列步骤...
64位程序调用32位com server 解决方案 例子代码
但同时,这也需要对COM机制和DLL编程有深入的理解,以便正确地实现和维护这样的解决方案。在www.pudn.com.txt和MyDll文件中,可能包含了更具体的代码示例和详细步骤,可以帮助你更好地理解和实践这个过程。
api-ms-win-crt-runtime-l1-1-0.dll 丢失,通过本程序便可以解决,不要相信网上的其他的解决方案,真的不好用,这个也是我找了好久,绝对好用,凭良心,当时也是在解决Python安装的时候遇到的问题,这种问题我遇到了...
为了解决这个问题,"目录选择控件.zip"提供了一个定制化的解决方案,它包含一个名为"qdir.dll"的动态链接库文件,以及相关的使用说明。 "qdir.dll"是一个VFP扩展控件,它可以替代GETDIR()函数,为用户界面提供更加...
- **使用中间层**:创建一个64位的中间层程序,该程序作为桥梁,接收32位程序的调用,并转发给64位DLL。这个中间层程序可以是.NET Framework的C#或VB.NET项目,也可以是C++/CLI项目。 - **使用API钩子**:通过在...
然而,这并不是一个长期解决方案,真正的解决方案应该是找出问题的具体原因并进行相应的修复或更新。 在标签中,“dll”强调了讨论的重点在于动态链接库的使用和管理。在Windows环境中,DLL文件的管理有时会引发...
解决方案:拷贝hadoop.dll文件到Windows目录C:\Windows\System32,并且个别同学电脑还需要修改hadoop源码。 10. 自定义outputformat时,注意在recordWirter中的close方法必须关闭流资源。否则输出的文件内容中数据...
标题中的“关于jacob的使用解决方案1”指出的是在Java环境中使用Jacob库遇到的问题及其解决方法。Jacob是一个Java到COM桥接库,允许Java应用程序访问和操作COM组件,如Microsoft Office套件,以便进行文件格式转换等...
如果用户遇到“找不到某个DLL”的错误,这个集锦可能会提供解决方案。然而,直接从不可信来源下载和替换DLL文件可能存在风险,可能导致安全问题或引入不兼容性。因此,用户在使用时应谨慎,并尽量从官方渠道获取更新...
在实际项目中,"Comm.jar"和"win32com.dll"可以结合使用,为跨平台的RS-232应用提供解决方案。例如,服务器端使用Java(依赖"Comm.jar")处理串口通信,客户端则通过Web服务或直接调用"win32com.dll"(在Windows环境...
首先,确保所有新版DLL文件被复制到运行目录下是非常关键的步骤。这样做的目的是确保当主程序运行时,能够找到并加载最新版本的库文件,而不是依赖于系统路径或其他位置的旧版本。这可以通过构建脚本、安装程序或者...
是一个实用的工具,对于那些不熟悉系统底层工作原理和技术的普通用户来说,它提供了一个快速且无需专业知识的解决方案,来处理由于DLL文件缺失引发的各种问题。在使用过程中,用户应遵循安全原则,确保从可靠的源...
为了确保程序能在各种环境下正常运行,有几种解决方案: - 使用安装程序:创建一个安装程序,将所有依赖的DLL文件打包,并在目标计算机上安装时自动复制到适当位置。 - 静态链接:在编译时将所有需要的库静态链接到...
本文将深入探讨cd.dll插件的作用、常见问题及其解决方案。 首先,cd.dll是一个动态链接库(Dynamic Link Library)文件,它是Windows操作系统中的一个重要部分。在Photoshop中,这样的DLL文件通常包含了某些特定的...
Network List Service 不能启动解决方案 Network List Service 是Windows操作系统中的一个重要组件,负责管理网络连接和网络配置。然而,有时Network List Service可能无法启动,导致网络连接图标上出现小红叉,并...
- 在解决方案的属性设置中,勾选“为COM互操作注册”选项,这一步是为了确保DLL能够被非.NET环境下的程序所识别。 - 修改AssemblyInfo.cs文件中的属性,例如`[assembly: ComVisible(true)]` 和 `[assembly: Guid(...