Inovácia a prechod je uvádzaná zostava CLR objektu inštanciu programu SQL Server 2005 zostavy

Bug #: 490 (rýchla oprava SQL)

Súhrn

Pri pokuse o inováciu alebo prechod zostavy bežné language runtime (CLR) objektu inštanciu programu Microsoft SQL Server 2005 nie je možné zmeniť verziu odkazovaný zostáv v metaúdajoch zhromaždenia. Okrem toho používate silný názov zostavy CLR objektu nemožno prechod zostavy pomocou vyhlásenie zhromaždenia zmeniť.

ÚVOD

Tento článok popisuje inováciu alebo prechod zostavy sa odkazovaný zostáv CLR objektu inštanciu programu SQL Server 2005.

Ďalšie informácie

Inovácia a prechod zostavy

SQL Server 2005, môžete použiť vyhlásenie zhromaždenia zmeniť inovácie alebo prechod samostatné zostavy vytvorený pomocou silný názov. Pre silný názov zostavy, môžete inovovať však nemožno prechod zostavy pomocou vyhlásenie zhromaždenia zmeniť.

Nemôžete inovovať alebo prechod zostavy v nasledujúcom prípade:

  • Zostavy A vytvorí inštanciu objektu CLR. A má odkazovaný zostavy. Uvádzaná zostava sa zostava B.

  • B má žiadne odkazovaný zostavy.

  • Môžete preložiť zostavy A odkaz na inú verziu zhromaždenia B.

V takomto prípade môžete vyhlásenie zhromaždenia zmeniť aktualizovať zostavy B na novú verziu. Ak zostava B nie je silný názov zostavy, môžete tiež prechod zostava B na staršiu verziu. Nemôžete však použiť vyhlásenie zhromaždenia zmeniť inovácie alebo prechod zostavy A prekompilovat verziu.

Toto správanie sa vyskytuje, pretože SQL Server vytvára politika CLR fusion pri vytváraní zostavy A. Táto politika CLR fusion automaticky priradí verzia zostavy B metaúdajov zostavy na aktuálnu verziu zostavy B. SQL Server načíta nová verzia zostavy B pri spustení po inovácii alebo prechod zostava B niektoré iné verzie. Toto správanie sa vyskytuje aj zostavy A odkazuje na pôvodnú verziu zostavy B. Však pri pokuse o inováciu alebo prechod zostava A zostava obsahuje novú verziu zostavy B metaúdajov, vyhlásenie zhromaždenia zmeniť zlyhá a zobrazí chybové hlásenia, ktoré podobný nasledujúcemu:

Chybové hlásenie 1

MSG 6529, úroveň 16, štát 1, riadok 1

ZHROMAŽDENIA zmeniť zlyhala, pretože sa zmenila identitu uvádzaná zostava "RefAsm". Uistite sa, že verzia, názov a verejného kľúča nezmenili.

Chybové hlásenie 2

MSG 6282, úroveň 16, štát 1, riadok 1

Zmení sa odkazovaný zostavy sa nepodarilo zhromaždenia zmeniť. Odkazovaná pokynoch musia zostať rovnaké.

Inovácia alebo prechod zostavy

Poznámky

  • Tento postup inovácie alebo prechod zostavy A scenára, ktorý bol popísaný v časti "Ako inováciu alebo prechod zostavy".

  • V tomto príklade sa predpokladá, že verzie 2 zostavy sú 1.0.0.0 a zostavy sú aj napísané v jazyku C#. Po vykonaní týchto krokov, sa pokúsite inovovať zostavy A a B zostava verzia 2.0.0.0.

Upgrade alebo prechod A zostavy, postupujte nasledovne.

  1. Verzia 1.0.0.0 zostava B zálohovať priečinok.

  2. Zmeniť, a potom znovu Vytvorte zostava B verzia 2.0.0.0.

  3. Použiť vyhlásenie zhromaždenia zmeniť inovácie B zostavy SQL Server 2005.

  4. Zmeniť, a potom znovu Vytvorte zhromaždenia A verzia 2.0.0.0. Keď sa referenčná verzia 1.0.0.0 zostavy B zo zálohy, ktoré ste vykonali v kroku 1. Vykonáte to pomocou nástroja kompilátor Csc.exe spolu s prepínačom /reference . Napríklad, použite nasledujúci príkaz:

    CSC /target:library/out:AssemblyA.dll AssemblyA.cs AssemblyInfo.cs /reference: "BackupFolder\AssemblyB.dll"Poznámka: Overte verziu zostavy B metaúdajov zostavy A, otvorte zostavy A použitím pomôcky Ildasm.exe. Skontrolujte metaúdaje pre uvádzaná zostava časti PREJAVÍ .

  5. Použiť vyhlásenie zhromaždenia zmeniť upgrade zostavy A SQL Server 2005.

Ako prechod silný názov zostavy

Ak používate silný názov zostavy CLR objektu, SQL Server 2005 nepodporuje, pomocou vyhlásenie zhromaždenia zmeniť prechod zostavy. Pri pokuse o prechod na verziu zostavy pomocou vyhlásenie zhromaždenia zmeniť, zobrazí sa chybové hlásenie podobné nasledujúcemu:

MSG 6579, úroveň 16, štát 1, riadok 1
Zmeniť zhromaždenia "Asm1, verzia = 1.1.0.0 kultúry = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil" na "Asm1, verzia = 1.0.0.0 culture = neutral, publickeytoken = 3a52b896cff0513d, processorarchitecture = msil" nie je kompatibilný inovácie.

Ak chcete prechod silný názov zostavy, postupujte nasledovne:

  1. Presuňte všetky objekty, ktoré závisia od zostavy.

  2. Napíšte novšiu verziu zostavy.

  3. Vytvorenie staršiu verziu zostavy.

  4. Vytvorte všetky požadované objekty, ktoré závisia od zostavy.

Poznámka: Silný názov zostavy môžete inovovať použitím vyhlásenie zhromaždenia zmeniť. Však inovácia zahŕňa odkazovaný zostavy, musíte postupovať podľa krokov uvedených v časti "Inováciu alebo prechod zostavy".

Odkazy

Ďalšie informácie o vyhlásenie zhromaždenia zmeniť, nájdete na nasledujúcej webovej lokalite Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/ms186711.aspxĎalšie informácie o pomôcke Ildasm.exe, nájdete na nasledujúcej webovej lokalite MSDN:

http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pripojiť k Microsoft insiderov chcú

Považujete poskytnuté informácie za užitočné?

Ďakujem za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×