2011-06-15 17 views
0

我的msi安装程序项目包含两个完全相同名称的dll的不同版本,目标是通常的根安装文件夹。所以当安装程序在客户机上运行时,只有其中一个被安装。我有一个dll,不能放在调用它的exe的同一目录中。我如何配置visual studio来找到它?

我想我必须告诉安装程序项目将旧的dll放在不同的文件夹中。问题是,我该如何告诉程序在特定的文件夹中查找该特定的dll文件?我正在使用C#和VS2010。

感谢,

艾萨克

回答

3

后缀根据自己的版本号,并将其部署到同一个目录的方式组装。否则,它会变得非常麻烦的更新。

如果你真的想,你可以使用这种一个app.config文件的搬迁装配:http://support.microsoft.com/kb/837908

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="MyAssembly2" culture="neutral" publicKeyToken="307041694a995978"/> 
      <codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
+0

还有微软装配。它的报告查看器9和10 dll具体。如果我改变他们的名字,我会遇到麻烦吗?我明天会尝试你的App.Config解决方案。 – 2011-06-15 05:56:59

+0

虽然我仍然没有尝试使用app.config文件,但是能否告诉我通过Assembly.loadfrom这样做的好处是什么? – 2011-06-15 21:19:59

+0

明显的优势是,您可以在任何其他时间重定向到其他程序集,而无需重新编译应用程序。而且这通常被认为是一个合适的解决方案。 – 2011-06-15 21:29:44

0

好吧,我刚刚结束了手动加载组件。正如在使用Assembly.LoadFrom(相对路径字符串)

我试过后缀他们,但它开始抱怨它不符合app.manifest文件。

程序集解析事件也不起作用,因为reportviewer控件没有为所有的dll启动assemblyresolve。也许是因为它在它自己的appdomain中。

无论如何,这似乎现在工作。

-Isaac

相关问题