2010-05-31 20 views
3

我有一個在GAC中註冊了幾個版本的程序集。現在,我想讓我的一個使用此程序集(版本1.3)的客戶端指向最新版本(1.4),而無需打開源代碼並重新編譯客戶端。
我看到一篇文章表明這​​樣做使用應用程序配置文件(WinForm應用程序)C#如何使用應用程序配置文件重定向程序集加載

這裏的技術是配置文件內容:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration xmlns:asm="urn:schemas-microsoft-com:asm.v1"> 
<runtime> 
<asm:assemblyBinding> 
    <!-- one dependentAssembly per unique assembly name --> 
    <asm:dependentAssembly> 
    <asm:assemblyIdentity 
     name="MyFacade" 
     publicKeyToken="c9c18e16df1654e0" /> 
    <!-- one bindingRedirect per redirection --> 
    <asm:bindingRedirect oldVersion="1.3.0.0" 
        newVersion="1.4.0.0" /> 
    </asm:dependentAssembly> 
</asm:assemblyBinding> 
</runtime> 
</configuration> 

正如你所看到的,是有約束力的重定向版本號爲1.3.0.01.4.0.0,組件名稱爲MyFacade

現在,這種方法只有一個小問題。它不工作:)

我敢肯定這是我的代碼。

有什麼建議嗎?

感謝,
阿迪巴爾達

+0

使用fuslogvw.exe查看CLR正在考慮的內容。 – 2010-05-31 15:43:30

回答

3

第一,this is the best source我發現關於這個主題。有一些差異,例如,它們沒有使用asm:命名空間,並且您可能希望按照文章中所述添加<publisherPolicy apply="no" />來禁用發佈者策略。

在之前的一個項目中,我們需要更多的控制,所以我們需要捕獲AppDomain.AssemblyResolve Event並且路由到我們想要的任何程序集。 Here你可以找到更多關於這個概念的信息。不過,你必須一次操作你的應用程序。

+0

謝謝,這幫助我解決了類似於OP的問題:) – Chris 2012-04-06 08:26:58

相關問題