.NET හි එකලස් කිරීම් සංස්කරණය කිරීම ඔබේ එකලස් කිරීම සඳහා අනුවාදයක් නියම කිරීමට දැනට අවම වශයෙන් ක්රම තුනක් වත් ඇති බැවින් ව්යාකූල අපේක්ෂාවක් විය හැකිය.
එකලස් කිරීමේ ප්රධාන අංග තුන මෙන්න:
// Assembly mscorlib, Version 2.0.0.0
[assembly: AssemblyFileVersion("2.0.50727.3521")]
[assembly: AssemblyInformationalVersion("2.0.50727.3521")]
[assembly: AssemblyVersion("2.0.0.0")]
සම්මුතිය අනුව, අනුවාදයේ කොටස් හතර ප්රධාන අනුවාදය , කුඩා අනුවාදය , ගොඩනැගීම සහ සංශෝධනය ලෙස හැඳින්වේ .
මෙම AssemblyFileVersion
අද්විතීය ලෙස ම වර්ධනීය හඳුනා ගැනීමට අදහස් කර ගෙන ඇත තනි එකලස්
එකලස් කිරීමේ අනුවාදය පිළිබිඹු කිරීම සඳහා සාමාන්යයෙන් ඔබ මේජර් සහ කුඩා එකලස් ෆයිල්වර්ෂන් අතින් සකසනු ඇත, ඉන්පසු ඔබේ ගොඩනැගීමේ පද්ධතිය එකලස් කරන සෑම අවස්ථාවකම ගොඩනැගීම සහ / හෝ සංශෝධනය වැඩි කරන්න. එකලස් කිරීමේ ගොඩනැගිල්ල අද්විතීය ලෙස හඳුනා ගැනීමට AssemblyFileVersion ඔබට ඉඩ දිය යුතු අතර එමඟින් ඔබට ඕනෑම ගැටළුවක් නිරාකරණය සඳහා ආරම්භක ස්ථානයක් ලෙස භාවිතා කළ හැකිය.
මගේ වර්තමාන ව්යපෘතියේ දී, අපගේ මූලාශ්ර පාලන ගබඩාවේ සිට චේන්ජලිස්ට් අංකය එකලස් ෆයිල්වර්ෂන් හි බිල්ඩ් ඇන්ඩ් රිවිෂන් කොටස් වෙත බිල්ඩ් සේවාදායකය කේතනය කර ඇත. ගොඩනැඟීමේ සේවාදායකයා විසින් ජනනය කරන ඕනෑම එකලස් කිරීමක් සඳහා (මූලාශ්ර පාලනයේදී ලේබල් හෝ ශාඛා භාවිතා නොකර, හෝ මුදා හරින ලද අනුවාදවල කිසිදු වාර්තාවක් අතින් තබා නොගෙන) එකලස් කිරීමක සිට එහි ප්රභව කේතයට කෙලින්ම සිතියම් ගත කිරීමට මෙය අපට ඉඩ දෙයි.
මෙම අනුවාද අංකය Win32 අනුවාද සම්පතෙහි ගබඩා කර ඇති අතර එකලස් කිරීම සඳහා වින්ඩෝස් එක්ස්ප්ලෝරර් දේපල පිටු බලන විට දැකිය හැකිය.
සීඑල්ආර් එකලස් ෆයිල්වර්ෂන් ගැන තැකීමක් කරන්නේ නැත.
මෙම AssemblyInformationalVersion
ඔබේ සම්පුර්ණ නිෂ්පාදන අනුවාදය නියෝජනය කිරීමට අදහස් කර ගෙන ඇත
AssemblyInformationalVersion හි අරමුණ වන්නේ සමස්ත නිෂ්පාදනයේම සුසංයෝගී අනුවාදයට ඉඩ දීමයි, ඒවා ස්වාධීනව සංස්කරණය කරන ලද එක්රැස්වීම් වලින් සමන්විත විය හැකිය, සමහර විට වෙනස් අනුවාදකරණ ප්රතිපත්ති සහ අසමාන කණ්ඩායම් විසින් වර්ධනය කළ හැකිය.
“උදාහරණයක් ලෙස, නිෂ්පාදනයේ 2.0 අනුවාදයේ එකලස් කිරීම් කිහිපයක් අඩංගු විය හැකිය; මෙම එකලස් කිරීම් වලින් එකක් 1.0 අනුවාදය ලෙස සලකුණු කර ඇති අතර එය එකම නිෂ්පාදනයේ 1.0 අනුවාදයේ නැව්ගත නොකළ නව එකලස් කිරීමකි. සාමාන්යයෙන්, ඔබේ නිෂ්පාදනයේ පොදු අනුවාදය නියෝජනය කිරීම සඳහා මෙම අනුවාද අංකයේ ප්රධාන හා සුළු කොටස් ඔබ විසින් සකසා ඇත. සම්පූර්ණ නිෂ්පාදනයක් එහි සියලු එකලස් කිරීම් සමඟ ඇසුරුම් කරන සෑම අවස්ථාවකම ඔබ ගොඩනැගීමේ සහ සංශෝධන කොටස් වැඩි කරයි. ” - ජෙෆ්රි රිච්ටර්, [සීඑල්ආර් හරහා සී # (දෙවන සංස්කරණය)] පි. 57 යි
සීඑල්ආර් එකලස් කිරීමේ තොරතුරු සංස්කරණය ගැන තැකීමක් නොකරයි.
මෙම AssemblyVersion
පිළිබඳ CLR සැලකිලිමත් වෙන එකම අනුවාදය වේ (නමුත් එය සමස්ත ගැන සැලකිලිමත් AssemblyVersion
)
එකලස් කිරීමේ අනුවාදය සීඑල්ආර් විසින් දැඩි ලෙස නම් කරන ලද එකලස් කිරීම් වලට බැඳීමට භාවිතා කරයි. එය ඉදිකරන ලද එකලස් කිරීමේ එකලස් කිරීමේ මැනිෆෙස්ට් පාර-දත්ත වගුවේ සහ එය සඳහන් කරන ඕනෑම එකලස් කිරීමේ එකලස් කිරීමේ වගුවේ ගබඩා කර ඇත.
මෙය ඉතා වැදගත් ය, මන්ද එයින් අදහස් කරන්නේ ඔබ දැඩි ලෙස නම් කරන ලද එක්රැස්වීමක් ගැන සඳහන් කරන විට, ඔබ එම එක්රැස්වීමේ නිශ්චිත එකලස් සංස්කරණයකට තදින් බැඳී සිටින බවයි. සමස්ත එකලස් කිරීමේ සංස්කරණය බන්ධනය සාර්ථක වීමට නිශ්චිත ගැලපීමක් විය යුතුය. නිදසුනක් ලෙස, ඔබ ශක්තිමත් ලෙස නම් කරන ලද එකලස් කිරීමේ 1.0.0.0 අනුවාදය ගොඩනංවන වේලාවේ සඳහන් කළත්, එම එකලස් කිරීමේ 1.0.0.1 අනුවාදය පමණක් ධාවන වේලාවේ තිබේ නම්, බන්ධනය අසාර්ථක වනු ඇත! (එවිට ඔබට එකලස් කිරීමේ බන්ධන යළි-යොමුවීම් භාවිතා කර මේ සඳහා වැඩ කිරීමට සිදුවේ .)
සමස්තය AssemblyVersion
ගැලපිය යුතුද යන්න පිළිබඳ ව්යාකූලත්වය . (ඔව්, එය එසේ වේ.)
එක්රැස්වීමක් පැටවීම සඳහා සමස්ත එකලස් අනුවාදයම හරියටම ගැලපෙන්නේද යන්න පිළිබඳව කුඩා ව්යාකූලතාවයක් පවතී. බැඳීම සාර්ථක කර ගැනීම සඳහා එකලස් කිරීමේ අනුවාදයේ මේජර් සහ කුඩා කොටස් පමණක් ගැලපිය යුතු බවට ඇතැමුන් ව්යාජ විශ්වාසයක් ඇත. මෙය සංවේදී උපකල්පනයකි, කෙසේ වෙතත් එය අවසානයේ වැරදිය. (.NET 3.5 වන විට), සහ ඔබේ සීඑල්ආර් අනුවාදය සඳහා මෙය සත්යාපනය කිරීම සුළුපටු ය. මෙම නියැදි කේතය ක්රියාත්මක කරන්න .
මගේ යන්ත්රයේ දෙවන එකලස් කිරීමේ භාරය අසමත් වන අතර විලයන ලොගයේ අවසාන පේළි දෙක එයට හේතුව පැහැදිලි කරයි:
.NET Framework Version: 2.0.50727.3521
---
Attempting to load assembly: Rhino.Mocks, Version=3.5.0.1337, Culture=neutral, PublicKeyToken=0b3305902db7183f
Successfully loaded assembly: Rhino.Mocks, Version=3.5.0.1337, Culture=neutral, PublicKeyToken=0b3305902db7183f
---
Attempting to load assembly: Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f
Assembly binding for failed:
System.IO.FileLoadException: Could not load file or assembly 'Rhino.Mocks, Version=3.5.0.1336, Culture=neutral,
PublicKeyToken=0b3305902db7183f' or one of its dependencies. The located assembly's manifest definition
does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f'
=== Pre-bind state information ===
LOG: User = Phoenix\Dani
LOG: DisplayName = Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f
(Fully-specified)
LOG: Appbase = [...]
LOG: Initial PrivatePath = NULL
Calling assembly : AssemblyBinding, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config.
LOG: Post-policy reference: Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f
LOG: Attempting download of new URL [...].
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
මෙම ව්යාකූලත්වයේ මූලාශ්රය විය හැක්කේ මයික්රොසොෆ්ට් මුලින් අදහස් කළේ මේජර් සහ කුඩා අනුවාද කොටස් සමඟ පමණක් ගැලපීමෙන් සම්පූර්ණ එකලස් අනුවාදයේ මෙම දැඩි ගැලපීම කෙරෙහි මඳක් සැහැල්ලු වීමට ය:
“එක්රැස්වීමක් පැටවීමේදී, ඉල්ලා සිටින එක්රැස්වීමේ ප්රධාන / සුළු අනුවාදයට ගැලපෙන නවතම ස්ථාපිත සේවා අනුවාදය සීඑල්ආර් ස්වයංක්රීයව සොයා ගනී.” - ජෙෆ්රි රිච්ටර්, [සීඑල්ආර් හරහා සී # (දෙවන සංස්කරණය)] පි. 56 යි
1.0 සීඑල්ආර් හි බීටා 1 හි හැසිරීම මෙයයි, කෙසේ වෙතත් මෙම නිකුතුව 1.0 නිකුතුවට පෙර ඉවත් කරන ලද අතර .නෙට් 2.0 හි නැවත මතුපිටට පැමිණීමට නොහැකි විය:
“සටහන: අනුවාද අංක ගැන ඔබ සිතිය යුතු ආකාරය මම විස්තර කර ඇත්තෙමි. අවාසනාවකට මෙන්, සීඑල්ආර් අනුවාද අංකවලට මේ ආකාරයෙන් සලකන්නේ නැත. . ). කෙසේ වෙතත්,
මයික්රොසොෆ්ට් සමාගම විසින් සීඑල්ආර් හි පැටවුම අනාගත අනුවාදයකින් වෙනස් කිරීමට සැලසුම් කර ඇති අතර එමඟින් එකලස් කිරීමක දී ලබා දී ඇති ප්රධාන / සුළු අනුවාදයක් සඳහා නවතම ගොඩනැගීම / සංශෝධනය පටවනු ලැබේ.. නිදසුනක් ලෙස, සීඑල්ආර් හි අනාගත අනුවාදයකදී, එකලස් කිරීමේ 1.2.3.4 අනුවාදය සොයා ගැනීමට පැටවුම උත්සාහ කරන්නේ නම් සහ 1.2.5.0 අනුවාදය තිබේ නම්, පැටවුම ස්වයංක්රීයව නවතම සේවා අනුවාදය ලබා ගනී. මෙය සීඑල්ආර් පැටවුමේ ඉතා සාදරයෙන් පිළිගත හැකි වෙනසක් වනු ඇත - මට බලා සිටිය නොහැක. ” - ජෙෆ්රි රිච්ටර්, [සීඑල්ආර් හරහා සී # (දෙවන සංස්කරණය)] පි. 164 (අවධාරණය මගේ)
මෙම වෙනස තවමත් ක්රියාත්මක කර නොමැති බැවින්, මයික්රොසොෆ්ට් මෙම අභිප්රාය පිළිබඳව පසු විපරමක් කර ඇතැයි සිතීම ආරක්ෂිත යැයි මම සිතමි, මෙය දැන් වෙනස් කිරීමට ප්රමාද වැඩියි. මෙම සැලසුම් වලින් සිදුවූයේ කුමක්දැයි දැන ගැනීමට මම වෙබය පුරා සෙවීමට උත්සාහ කළ නමුත් මට පිළිතුරු සොයාගත නොහැකි විය. මට තවමත් එහි පතුලටම යාමට අවශ්ය විය.
ඒ නිසා මම ජෙෆ් රිච්ටර්ට විද්යුත් තැපෑලක් යැව්වා.
සෙනසුරාදා උදෑසන නොඅඩු පැය 12 ක් ඇතුළත ඔහු පිළිතුරු දුන් අතර .NET 1.0 බීටා 1 ලෝඩර් එකලස් කිරීමේ නවතම ගොඩනැඟිලි හා සංශෝධනයන් තෝරා ගැනීමේ මෙම 'ස්වයංක්රීය රෝල්-ෆෝවර්ඩ්' යාන්ත්රණය ක්රියාත්මක කළ නමුත් මෙම හැසිරීම .NET 1.0 නැව්ගත කිරීමට පෙර ආපසු හරවන ලදි. පසුව මෙය පුනර්ජීවනය කිරීමට අදහස් කළ නමුත් සීඑල්ආර් 2.0 නැව්ගත කිරීමට පෙර එය සිදු නොවීය. පසුව සීඑල්ආර් කණ්ඩායමට ප්රමුඛත්වය දුන් සිල්වර් ලයිට් පැමිණියේය, එබැවින් මෙම ක්රියාකාරිත්වය තවදුරටත් ප්රමාද විය. මේ අතර, සීඑල්ආර් 1.0 බීටා 1 හි සිටි බොහෝ දෙනා එතැන් සිට ඉදිරියට ගොස් ඇති අතර, මේ වන විටත් ඒ සඳහා වෙහෙස මහන්සි වී වැඩ කර තිබියදීත්, මෙය දිවා ආලෝකය දකිනු ඇතැයි සිතිය නොහැක.
වර්තමාන හැසිරීම, මෙහි රැඳී සිටින බව පෙනේ.
එකලස් ෆයිල්වර්ෂන් එකතු කරනු ලැබුවේ 'ස්වයංක්රීය රෝල්-ෆෝවර්ඩ්' යාන්ත්රණය ඉවත් කිරීමෙන් පසුව පමණක් බව ජෙෆ් සමඟ මා කළ සාකච්ඡාවෙන් ද සඳහන් කිරීම වටී - මක්නිසාද යත් 1.0 බීටා 1 ට පසුව, එකලස් කිරීමේ අනුවාදයේ යම් වෙනසක් ඔබේ ගනුදෙනුකරුවන් සඳහා කැපී පෙනෙන වෙනසක් වූ හෙයිනි. ඔබගේ ගොඩනැගීමේ අංකය ආරක්ෂිතව ගබඩා කිරීමට කොතැනකවත් නැත. AssemblyFileVersion යනු ආරක්ෂිත ස්ථානයකි, එය කිසි විටෙකත් සීඑල්ආර් විසින් ස්වයංක්රීයව පරීක්ෂා නොකෙරේ. එකලස් කිරීමේ අනුවාදයේ මේජර් / සුළු (බිඳීම) සහ ගොඩනැගීම / සංශෝධනය (නොබිඳිය හැකි) කොටස් අතර එම වෙන් කිරීම සිදු කිරීමට උත්සාහ කරනවාට වඩා වෙනම අර්ථ දෙකක් සහිත වෙනම අනුවාද අංක දෙකක් තිබීම සමහර විට එය වඩාත් පැහැදිලි ය.
නිගමනය: ඔබ වෙනස් කරන විට හොඳින් සිතා බලන්න AssemblyVersion
සදාචාරය නම්, ඔබ වෙනත් සංවර්ධකයින් යොමු කිරීමට යන එකලස් කිරීම් නැව්ගත කරන්නේ නම්, ඔබ එම එක්රැස්වීම්වල එකලස් සංස්කරණය වෙනස් කරන විට (සහ නොකරන්න) ගැන අතිශයින්ම සැලකිලිමත් විය යුතුය. AssemblyVersion හි කිසියම් වෙනස්කමක් අදහස් කරන්නේ යෙදුම් සංවර්ධකයින්ට නව අනුවාදයට එරෙහිව නැවත සම්පාදනය කිරීමට සිදුවනු ඇති බවයි (එම AssemblyRef ඇතුළත් කිරීම් යාවත්කාලීන කිරීමට) හෝ බන්ධනය අතින් අභිබවා යාමට එකලස් කිරීමේ බන්ධන යළි-යොමුවීම් භාවිතා කරන්න.
- පසුපසට අනුකූල වීමට අදහස් කරන සේවා නිකුතුවක් සඳහා එකලස් අනුවාදය වෙනස් නොකරන්න .
- Do ඔබ දන්නා වෙනස්කම් බිඳ ඇති බව නිවේදනයක් නිකුත් සඳහා AssemblyVersion වෙනස් කරන්න.
Mscorlib හි ඇති අනුවාදයේ ගුණාංග දෙස නැවත බලන්න:
// Assembly mscorlib, Version 2.0.0.0
[assembly: AssemblyFileVersion("2.0.50727.3521")]
[assembly: AssemblyInformationalVersion("2.0.50727.3521")]
[assembly: AssemblyVersion("2.0.0.0")]
සියලු සිත්ගන්නාසුලු සේවා තොරතුරු අඩංගු වන්නේ එකලස් ෆයිල්වර්ෂන් බව සලකන්න (මෙම අනුවාදයේ සංශෝධන කොටස වන්නේ ඔබ සිටින්නේ කුමන සේවා ඇසුරුමදැයි ඔබට කියනු ඇත), මේ අතර එකලස් කිරීමේ අනුවාදය කම්මැලි පැරණි 2.0.0.0 ට සවි කර ඇත. AssemblyVersion හි ඕනෑම වෙනස්කමක් mscorlib.dll යොමු කරන සෑම .NET යෙදුමක්ම නව අනුවාදයට එරෙහිව නැවත සම්පාදනය කිරීමට බල කරනු ඇත!