2013-03-28 102 views
2

我有2个组件装配的另一个让他们打电话A和B.我已经指派强名称给他们,现在出现的问题是程序集B在寻找旧版本组件A 的** EDIT2 :如果我删除AssemblyB问题仍然存在,所以它可能只是VS2008寻找旧版本?也可通过fusionlog我看到下面的警告:WRN应用程序配置文件结合不允许重定向。这与它有什么关系? **引用旧的DLL

我得到了多个同类型的错误,这里有一个片断:

You must add a reference to assembly 'AssemblyA, Version=1.2.4737.25316, Culture=neutral, PublicKeyToken=null'. 

项目内的强命名AssemblyA显示了这些属性: enter image description here

里面的app.config我有放置这段代码:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="AssemblyA" culture="neutral" 
    publicKeyToken="a22e30ac6a0edfc0"/> 
      <bindingRedirect oldVersion="1.2.4737.25316" newVersion="1.3.0.19440"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

但这不起作用。我有权访问这两个程序集的源代码。

编辑:如果我删除了强命名和老(弱命名)的dll添加到项目它会给出一个错误信息,询问有关强命名的版本

You must add a reference to assembly 'AssemblyA, Version=1.3.0.19440, Culture=neutral, PublicKeyToken=a22e30ac6a0edfc0'. 

这里发生了什么?

回答

2

一些DLL文件仍然提到了其他DLL的老(弱命名)版本。幸运的是,组件与源进来,所以我不得不重新编译的一切,包括一个关键。

之后,另一个错误沿“找到的程序集清单定义不匹配的程序集引用”

为了解决这个问题,我添加在App.config以下的线路走了过来。

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
      <publisherPolicy apply="no" /> 
      <assemblyIdentity name="Assemblyname" culture="neutral" publicKeyToken="3a5628535d42dbed"/> 
      <bindingRedirect oldVersion="1.3.0.15233" newVersion="1.3.0.40647" /> 
      </dependentAssembly> 
     </assemblyBinding> 
     </runtime> 
    </configuration> 
+0

如果我在没有app.config的项目上怎么办 – 2013-06-30 16:07:06

+0

@ ShadyM.Najib取决于您正在处理的项目类型。你可以尝试通过这种方法将它添加:http://msdn.microsoft.com/en-us/library/ms184658(v=vs.90).aspx。如果您正在使用SSIS脚本组件,则可以尝试更改此文件:C:\ Program Files \ Microsoft SQL Server \ 100 \ DTS \ Binn \ DtsDebugHost.exe.config,将这段代码放置在标记之间。 – tutu 2013-07-03 15:30:16

+0

其实我的意思是不支持配置文件的项目类型.. Windows 8项目的例如:D – 2013-07-03 19:03:30