簡體   English   中英

將程序集版本重定向到其他CLR / GAC

[英]Redirecting Assembly versions to a different CLR/GAC

我對2個CLR版本(即.NET框架的版本2和版本4)使用不同的GAC位置存在疑問。 我構建了一個客戶端應用程序,該應用程序引用了v2 GAC(C:\\ Windows \\ Assembly)中的程序集“ X”。 我現在正在更新程序集“ X”以在.NET框架v4(C:\\ Windows \\ Microsoft.NET \\ assembly)上運行,但是,我不想重新編譯客戶端應用程序。 請注意,在將組件“ X”安裝到v4 GAC之前,已將其從v2 GAC中刪除。

是否可以創建一個發布者策略文件,以將以前駐留在CLR版本2中的程序集重定向到CLR版本4? 如果是這樣,這是如何實現的?

我已經搜索了MSDN,並了解到AssemblyBinding元素上有一個applyTo字段,您可以在其中指定.NET Framework的版本,但這似乎涵蓋了整個綁定。

我想要的是這樣的:

<bindingRedirect oldVersion="1.0.0.0" .Net 2 newVersion="2.0.0.0" .Net 4/>

我已經在這里閱讀http://msdn.microsoft.com/en-us/magazine/dd727509.aspx ,這表明CLR v2.0應用程序現在無法在GAC中看到CLR v4.0程序集。 但是,您可以通過以下方式強制應用使用更新的CLR:

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />

那么將這些與發布者策略混合使用就足夠了嗎,還是有另一種方法?

這里的決定因素是您的客戶端應用程序在哪個版本的CLR下運行。 如果是v2,則您無能為力,無法使v4程序集可用或可見。 如果確實在v4 CLR下運行,則它將首先自動嘗試解析v4 GAC中的程序集引用。

好消息是,您無需重新編譯客戶端應用程序即可實現這一目標。 您只需將其添加到應用程序的配置文件中,即可強制其在.Net 4下運行:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>

這應該給您您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM