Sur*_*esh 13 .net binding assemblies
我有一个名为"MyAssembly"的类库,它在内部引用a.dll,版本3.1.1.0的b.dll; 我已经构建了一个超出MyAssembly.dll的项目.在另一个系统(框)上,我创建了一个Web应用程序项目并引用了MyAssembly.dll.新系统有新版本的a.dll和b.dll 4.0.0; 我在web.config中使用绑定重定向,如下所示.但仍然无法编译Web应用程序.它说缺少程序集引用a.dll,版本3.1.1.0.
任何人都可以帮助解决这个问题吗?
谢谢,Suresh
Bra*_*ney 29
这完全适合我.注意:标记上需要NO命名空间configuration
.而且你的标签上必须有一个命名空间assemblyBinding
.
<assemblyBinding> Element for <runtime>
<!-- important: no namespace -->
<configuration>
<runtime>
<!-- important, must have this namespace -->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Strongly.Named.Assembly" publicKeyToken="xxx" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
做这两件事,否则就不会读它.如果它在这个例子中给出了一个错误,它无法加载除2.0.0.0以外的任何东西,那么它就不会正确地获取配置元素.
这也适用于强名称程序集.要查明是否有强名称,请从VC命令窗口运行以下命令
打开(开始菜单>所有程序> visual studio> visual studio tools> visual studio命令提示符)
然后运行:
sn -vf "path-to-assembly.dll"
Run Code Online (Sandbox Code Playgroud)
如果它返回它是有效的,那么它的强名称.
来源:http: //blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/
这应该工作.
<runtime>
<dependentAssembly>
<assemblyIdentity name="MyAssembly" publicKeyToken="12233444"/>
<bindingRedirect oldVersion="3.1.1.0" newVersion="4.0.0.0"/>
</dependentAssembly>
</runtime>
Run Code Online (Sandbox Code Playgroud)
另一个建议:从配置标记中删除命名空间:
代替
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
Run Code Online (Sandbox Code Playgroud)
尝试
<configuration>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23188 次 |
最近记录: |