我有一个.NET程序集(由于我无法控制的原因)必须在GAC中.但是,同一个程序集由另一个程序使用,该程序具有自己的同一程序集的旧版本的副本.它必须使用自己的副本,而不是GAC中的任何副本.在这种情况下,正确的版本控制可能比它的价值更麻烦,原因我不会进入.我的问题是:无论如何要告诉.NET:只需使用此DLL,就在此目录中 - 忽略您在GAC或其他任何地方找到的内容.
Cor*_*rch 45
确保GAC程序集和本地程序集具有不同的版本号(至少可以通过在AssemblyInfo中对AssemblyVersion进行粗体处理来自动增加您的构建号:[assembly:AssemblyVersion("1.0.0.*") )]).然后,使用应用程序的配置重定向程序集绑定:
在您的情况下,您将不需要assemblyBinding配置的"applyTo"属性.你只需要:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="YourAssembly" publicKeyToken="AAAAAAAAAAAA" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.1.0" newVersion="5.0.8.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
您尝试过 Assembly.LoadFromFile() 吗?这是手动操作,但应在需要之前将程序集加载到内存中。然后.NET 将使用内存中的值而不是寻找它。
另一种方法是,如果本地程序集未签名,您可以通过这种方式区分它。
抢
| 归档时间: |
|
| 查看次数: |
34401 次 |
| 最近记录: |