如果公钥标记在旧版本上为空,并在较新版本上设置,是否有可能在引用程序集的不同版本之间执行程序集绑定redirect? 例如,我有两个程序集… System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null 和 System.Web.Mvc,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 如果下面的程序集绑定redirect工作在Asp.Net web.config中… <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
我们有一个asp.net 4.0项目,它使用了一些依赖于log4net版本1.2.10.0的框架。 今天我试图包含一个依赖于log4net版本1.2.11.0的新框架,自从: log4net 1.2.10.0具有publickeytoken = 1b44e1d426115821 log4net 1.2.11.0具有publickeytoken = 669e0ddf0bb1aa2a 由于这些不同,我不能通过web.config中的运行时元素使用程序集redirect(使所有的框架使用相同版本的log4net)或代码库(只有新的框架使用版本1.2.11.0)。 我在这里有什么select? (以及为什么log4net不断改变版本之间的publickeytokens,据我所知,一个丢失的密钥是1.2.9.0和1.2.10.0之间切换的原因,他们是否失去了关键呢?我会自愿我的保pipe箱保持安全,如果他们需要它…) 编辑:好吧,所以log4net家伙显然有这样的想法,用两个键释放是一个好主意,但这意味着你使用的每个框架需要同意他们喜欢的两种风格中的哪一种,或者这些框架不能工作在同一个appdomain旁边。 我是唯一一个发现这个可怕的想法吗? 如果每个人都这样做,那么一切都会崩溃,对吧? Edit2:正如我所说的,我没有在我的业务代码中使用log4net,但我使用了几个依赖于1.2.10.0的框架,并且当我试图使用依赖于1.2.11.0的新框架(新密钥),所以Stefans的回答并不适用,因为新的框架会期望新的关键,而不是旧的关键
我需要在我的web.config文件中重新创build一个提供程序,如下所示: <membership defaultProvider="AspNetSqlMemProvider"> <providers> <clear/> <add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" name="AspNetSqlMemProvider" type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </providers> </membership> 然而,我得到一个运行时错误,说这个程序集无法加载,我认为这是因为我有错误的PublicKeyToken。 我如何查找我的程序集的PublicKeyToken? 另外,我是否完全用这个错误的方式?