有多个程序需要引用 一个vb程序编译出来dll,现在的状态是每个程序都各自包含有这个dll,自己引用自己的dll。
因为那个dll经常会有改动,为了保证版本一致,想让各个程序都使用同一个dll(而不是各自用一个)。最好就是把这个dll固定放在系统的哪个位置,然后每个程序都到那个位置找dll...
请问这个该怎么实现呢?
我觉得是不是可以把我的dll注册一下成为系统默认那类的dll一样,大家都可以用....?
比如我把dll放到“C:\dll”下的话,如果我用 regsvr32 "C:\dll\xxxx.dll" 注册了这个dll之后,是不是这个dll就相当于是系统里默认的dll一样,这个系统下的每个程序都可以随便使用它了?如果是这样的话是不是就不用在每个程序的bin文件夹下添加这个dll的引用了啊??还是应该在哪里指定一下告诉程序应该到本地“C:\dll”去找这个dll???
菜鸟不太懂,还请高手指教~ 谢谢
看了你补充的内容后,知道你是 .net 组件。如果你不打算用 GAC ,还有一个办法,参考下面文章
http://topic.csdn.net/u/20080304/09/b08ce604-5b9b-4f98-a989-c882af25dd90.html?868839457
在 app.config 中加入一些配置就可以了。你试试看吧
注意:
privatePath 设置的路径必须是你当前exe 文件所在路径的子目录才行。
或者你在程序中加入 AppDomain.CurrentDomain.AppendPrivatePath 这么一句也可以,效果一样。
你说的注册dll的方法基本不可行,目前可以解决的办法可以是如下几种(暂时提供2种):
1、你在你机器上创建比如D:\\Dependencies目录,然后把这个公用的dll拷贝到该目录,之后再你的工程中进行引用,引用的方式和上一个问题雷同,只是这一次使用的是Browse(中文是 浏览)然后找到D:\\Dependencies目录下的dll文件,添加引用到工程中,其他的项目使用同样的方式进行引入。
2、你可以把你的这个dll文件作一个安装包,然后安装到固定的目录,当然也可以是D:\\Dependencies目录哦,然后其他的工程中进行约定,都引用这个安装目录下的dll即可...
其实解决办法有很多的,不过这两种是最常见的,第一种在一般的开发中大家都会使用,第二钟方式其实是和.NET本身安装后的原理一样
可以利用反射来实现dll文件的引用。
将.dll文件在其中一个系统安装的时候,复制到固定目录“c:/asd.dll”然后利用反射根据这路径生成这个dll的实例对象。其它系统安装的时候判断是否存在这个dll,存在的话就不再复制。
object objType = Assembly.Load(path).CreateInstance(key)
嗯,反射,即动态绑定是可以的。
邢少说的方法可行。
如果有那个dll的项目源码的话直接引用项目吧,被引用项目更新编译后,各个引用了它的项目也会自动更新引用的dll的.
不过如果你说的多程序,如果不再更新了的话,估计也不行.
要不在你被引用的"项目属性"的"生成事件"中写bat吧,生成后把生成的dll复制到各个程序的bin目录去.