<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    微軟的Dll管理方案及其變遷(Side-by-side assembly)

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    本文簡要介紹Side-by-side assembly技術,探討在插件技術中使用類似方法的可能。

    什么是Side-ty-side Assembly

    Side-by-side assemblyWindows Xp及以上系統解決動態鏈接庫版本沖突所使用的技術,要點是編譯程序時,由Visual Studio生成一個manifest文件,指明本應程序所使用的動態鏈接庫的版本;發布程序時也要發布該manifest文件,供客戶計算機上的dll loader根據manifest加載適當版本的dll,如果不發布該項manifest,客戶機按默認版本加載Dll

    ?Representation of typical side-by-side assembly

    Representation of typical side-by-side assembly

    http://msdn.microsoft.com/en-us/library/aa376307.aspx

    引自MSND網站

    如下所示是一個用VS2008編譯應用程序后生成的manifest文件,重點是指明了Microsoft.VC90.CRT的版本號,即本程序所用CC++的動態鏈接庫的版本號。

    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level='asInvoker' uiAccess='false' />
          </requestedPrivileges>
        </security>
      </trustInfo>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
    </assembly>

    對軟件發布的影響

    發布這個應用程序時,要確保相同版本的動態庫安裝到客戶的計算機上,所以要用微軟提供的相應的redistributable packege,注意VSVS SP的動態庫是不一樣的,但VS會默認用VS提供的版本。與此相關的問題是編譯器有權為應用程序指定所需的動態鏈接庫的版本,而CC++的運行時庫與VC的版本時相關的,關于如何設置可參考 http://msdn.microsoft.com/en-us/library/cc664727%28v=VS.90%29.aspx

    另一方面,應用程序除用到微軟的dll之外,還會用到第三方庫,這時確保所有庫都能訪問到正確版本的運行時庫就變得非常重要了。


    在插件技術中應用類似方法

    VS2010中,微軟已放棄這種方法,而是在DLL文件后加了一個版本號,同名的DLL只要版本號不同,以后也視為兩個DLL。獨立于操作系統插件系統,其中一定會有一個模塊起到Dll Loader的作用,能夠允許不同版本的同名插件同時存在在系統中有助于軟件系統的升級,有助于及時快速地滿足用戶的需要。參見 http://en.wikipedia.org/wiki/Side-by-side_assembly 

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全