如何让编译的exe程序,到指定的目录下找其需要的DLL文件

时间:2021-10-22 11:30:15
使用vs2005制作一个程序,其中引用了一个事先编译好的动态链接库C.dll
当我直接将程序编译后,debug目录下就有了可执行的exe程序,并且将debug目下的这些文件整体copy到任何一台已经安装了
framework2.0的pc上均可以运行。
现在遇到了一个问题,再部署的时候我们希望将C.dll放置于固定的位置C:\Bin\下面,而debug程序放置的位置并不固定,并且
删除debug目录中的C.dll文件
这样这个exe程序就不能运行了,会提示:“未能加载文件或程序集.....C.dll”
要如何解决这个问题,忘各位大虾指点迷经

14 个解决方案

#1


该回复于2010-11-16 16:17:18被版主删除

#2


<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v1.0.3705">
      <dependentAssembly>
        <assemblyIdentity name="aa" culture="neutral" />
        <codeBase version="1.0.0.0" href="file:///C:/DC_HIS/BIN/HIS.PharmIn.BLL.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

#3


加入到程序集全局缓存里

#4


怎么加入到全局缓存里啊?能具体的解释一下么?谢谢~

#5


打包時將dll放到Global Assembly Cache。




my blog
http://ufo-crackerx.blog.163.com/

#6


如果把C.dll放到GAC中,我们如何简单的更新其版本呢,我们希望能够通过简单的覆盖C.dll实现多个可执行程序的直接升级,我们将C.dll放置在C:\Bin\目录下就为了通过覆盖文件简单升级所有程序

#7


不同的強簽名就可以了

#8


这个加入到Global Assembly Cache的这个过程能写在代码里么?

#9


顶一下,等待高人解决一下,我们希望能让程序自动完成这些功能,而不需要使用手动通过.net的工具将C.dll加入到GAC

#10


在你的代码里面调用gacutil

    

    private void button1_Click(object sender, EventArgs e)
        {
            string args = " /i D:\\Bin\\C.dll"; 
            System.Diagnostics.Process.Start("gacutil.exe", args);
        }


你可以吧gacutil.exe拷贝到你的程序目录下,或者使用绝对路径指定到gacutil.exe文件。

#11


另外请教一个问题 定义变量时  Dim MyAssembly As [Assembly] 这句话中的[Assembly]加了‘[]’是什么意思

#12


...........

#13


引用 12 楼 acgds 的回复:
...........


那个 ,啥意思呀?朋友

#14


把dll放到GAC中

#1


该回复于2010-11-16 16:17:18被版主删除

#2


<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v1.0.3705">
      <dependentAssembly>
        <assemblyIdentity name="aa" culture="neutral" />
        <codeBase version="1.0.0.0" href="file:///C:/DC_HIS/BIN/HIS.PharmIn.BLL.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

#3


加入到程序集全局缓存里

#4


怎么加入到全局缓存里啊?能具体的解释一下么?谢谢~

#5


打包時將dll放到Global Assembly Cache。




my blog
http://ufo-crackerx.blog.163.com/

#6


如果把C.dll放到GAC中,我们如何简单的更新其版本呢,我们希望能够通过简单的覆盖C.dll实现多个可执行程序的直接升级,我们将C.dll放置在C:\Bin\目录下就为了通过覆盖文件简单升级所有程序

#7


不同的強簽名就可以了

#8


这个加入到Global Assembly Cache的这个过程能写在代码里么?

#9


顶一下,等待高人解决一下,我们希望能让程序自动完成这些功能,而不需要使用手动通过.net的工具将C.dll加入到GAC

#10


在你的代码里面调用gacutil

    

    private void button1_Click(object sender, EventArgs e)
        {
            string args = " /i D:\\Bin\\C.dll"; 
            System.Diagnostics.Process.Start("gacutil.exe", args);
        }


你可以吧gacutil.exe拷贝到你的程序目录下,或者使用绝对路径指定到gacutil.exe文件。

#11


另外请教一个问题 定义变量时  Dim MyAssembly As [Assembly] 这句话中的[Assembly]加了‘[]’是什么意思

#12


...........

#13


引用 12 楼 acgds 的回复:
...........


那个 ,啥意思呀?朋友

#14


把dll放到GAC中