AssemblyVersion, AssemblyFileVersion සහ AssemblyInformationalVersion අතර ඇති වෙනස්කම් මොනවාද?


870

එකලස් කිරීමේ අනුවාද ලක්ෂණ තුනක් ඇත. වෙනස්කම් මොනවාද? මම AssemblyVersionඉතිරිය භාවිතා කර නොසලකා හැරියොත් කමක් නැද්ද ?


MSDN පවසයි:

  • එකලස් කිරීමේ සංස්කරණය :

    ආරෝපණය කර ඇති එකලස් කිරීමේ අනුවාදය නියම කරයි.

  • එකලස් ෆයිල්වර්ෂන් :

    Win32 ගොනු අනුවාද සම්පත සඳහා නිශ්චිත අනුවාද අංකයක් භාවිතා කිරීමට සම්පාදකයෙකුට උපදෙස් දෙයි. Win32 ගොනු අනුවාදය එකලස් කිරීමේ අනුවාද අංකයට සමාන වීමට අවශ්‍ය නොවේ.

  • එකලස් තොරතුරු තොරතුරු :

    එකලස් කිරීමේ මැනිෆෙස්ට් සඳහා අතිරේක අනුවාද තොරතුරු අර්ථ දක්වයි.


මෙය පසු විපරමකි එකලස් කිරීමේ ගුණාංග භාවිතා කිරීම සඳහා හොඳම භාවිතයන් මොනවාද?

Answers:


914

එකලස් කිරීමේ සංස්කරණය

ඔබේ එකලස් කිරීම ගැන සඳහන් කරන වෙනත් එක්රැස්වීම් බලන තැන. මෙම අංකය වෙනස් වුවහොත්, වෙනත් එක්රැස්වීම් වලට ඔබේ සමුළුව වෙත ඔවුන්ගේ යොමු යාවත්කාලීන කළ යුතුය! මෙම අනුවාදය පසුගාමී අනුකූලතාව බිඳ දැමුවහොත් පමණක් යාවත්කාලීන කරන්න. මෙම AssemblyVersionඅවශ්ය වේ.

මම ආකෘතිය භාවිතා කරමි: major.minor . මෙහි ප්‍රති result ලය වනු ඇත්තේ:

[assembly: AssemblyVersion("1.0")]

ඔබ SemVer දැඩි ලෙස අනුගමනය කරන්නේ නම් මෙයින් අදහස් කරන්නේ ඔබ යාවත්කාලීන වන්නේ ප්‍රධාන වෙනස් වූ විට පමණක් වන බැවින් 1.0, 2.0, 3.0 යනාදියයි.

එකලස් ෆයිල්වර්ෂන්

යෙදවීම සඳහා භාවිතා වේ. සෑම යෙදවීමක් සඳහාම ඔබට මෙම අංකය වැඩි කළ හැකිය. එය සැකසුම් වැඩසටහන් මගින් භාවිතා කරයි. එකලස් වූ AssemblyVersionනමුත් විවිධ ගොඩනැඟිලි වලින් ජනනය වන එකලස් කිරීම් සලකුණු කිරීමට එය භාවිතා කරන්න .

වින්ඩෝස් හි, එය ගොනු ගුණාංග තුළ දැකිය හැකිය.

AssemblyFileVersion අත්‍යවශ්‍ය නොවේ. ලබා නොදුනහොත්, එකලස් කිරීමේ අනුවාදය භාවිතා වේ.

මම ආකෘතිය භාවිතා කරමි: major.minor.patch.build , එහිදී මම පළමු කොටස් තුන සඳහා SemVer අනුගමනය කරන අතර අවසාන කොටස සඳහා බිල්ඩ්සර්වරයේ බිල්ඩ්නම්බර් භාවිතා කරමි (දේශීය ගොඩනැගීම සඳහා 0). මෙහි ප්‍රති result ලය වනු ඇත්තේ:

[assembly: AssemblyFileVersion("1.3.2.254")]

System.Version විසින් මෙම කොටස් නම් කරන බව මතක තබා ගන්නmajor.minor.build.revision !

එකලස් තොරතුරු තොරතුරු

එකලස් කිරීමේ නිෂ්පාදන අනුවාදය. ගනුදෙනුකරුවන් සමඟ කතා කිරීමේදී හෝ ඔබේ වෙබ් අඩවියේ ප්‍රදර්ශනය සඳහා ඔබ භාවිතා කරන අනුවාදය මෙයයි. මෙම අනුවාදය ' 1.0 නිදහස් කිරීමේ අපේක්ෂකයා ' වැනි නූලක් විය හැකිය .

මෙම AssemblyInformationalVersionවිකල්ප වේ. ලබා නොදුනහොත්, AssemblyFileVersion භාවිතා වේ.

මම ආකෘතිය භාවිතා කරමි: major.minor [.patch] [සංශෝධනය නූල් ලෙස] . මෙහි ප්‍රති result ලය වනු ඇත්තේ:

[assembly: AssemblyInformationalVersion("1.0 RC1")]

4
AssemblyFileVersion සඳහා, "හැකි නම්, එය MSBuild විසින් ජනනය කිරීමට ඉඩ දෙන්න" - ඇයි? ඔබ එය අතින් පාලනය කිරීමට හොඳ හේතුවක් පැහැදිලි කිරීමට ගියේය :)
මෝ.

3
AssemblyInformationalVersion ආකෘතිය පිළිබඳ අනතුරු ඇඟවීම අද (2013 මැයි 21) VS2010 හි පවතින අතර ඔබගේ සබැඳිය අක්‍රීයයි.
රයිනර්පොස්ට්

22
අවාසනාවකට අනුවාද පංතිය නිර්වචනය major.minor[.build[.revision]]කර major.minor.revision.buildඇති අතර, ලබා දී ඇති පිළිතුරෙහි ඔබ පන්ති ගුණාංග භාවිතා කරන්නේ නම් හෝ System.Reflection.Assembly.GetExecutingAssembly().GetName().Versionගොඩ නැගීමේ සහ සංශෝධන අංක හඳුනා ගැනීමට නම්, ගොඩනැගීමේ සහ සංශෝධන අංක මාරු කරනු ලැබේ .
thinkOfaNumber

9
inkthinkOfaNumber අනුවාද පන්තිය පිළිබඳ ඔබේ අයිතිය, නමුත් එය Microsoft අනුවාදකරණ ක්‍රමයයි. මම පෞද්ගලිකව එය අවසානයේ දී buildnumber නොමැති බවට මා මත පමණක් පදනම් වූ, උදාහරණයක් ලෙස මගේ ආකෘතිය දමා ඇයි කියලා අමුතු හිතන්නේ අර්ථ විචාර අනුවාදකරණය . ඔබට මයික්‍රොසොෆ්ට් ක්‍රමය හෝ ඔබේම ක්‍රමයක් භාවිතා කිරීමට නිදහස තිබේ.
රෙමී වැන් ඩුයිජ්කරන්

6
AssemblyInformationalVersionඅතහැර දමා ඇත්නම් AssemblyFileVersionභාවිතා කරන බව සැලකිල්ලට ගත යුතුය . එවිට AssemblyVersion දෙකම මඟ හැරී ඇත්නම්.
Drazen Bjelovuk

593

.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 යෙදුමක්ම නව අනුවාදයට එරෙහිව නැවත සම්පාදනය කිරීමට බල කරනු ඇත!


10
නියම පිළිතුර. මම හිතන්නේ ඔබ කළ වැදගත්ම කරුණ - සහ එම්එස් පැහැදිලිවම නිර්දේශ කළ යුත්තේ - නව අනුවාදය පසුගාමී අනුකූලතාව බිඳ දැමුවහොත් පමණක් සහ එකලස් කිරීමේ අනුවාදයේ වෙනස්කම් කිරීමයි .
mwolfe02

1
මම නැවත නැවත මගෙන් අසන එක් ප්‍රශ්නයක් නම්, මෙම එක් එක් අනුවාද අංක වෙනස් කළ යුත්තේ කවදාද, එකලස් කිරීමේ අනුවාදයේ ඔබේ වෙඩි උණ්ඩ මේ සඳහා හොඳ පැහැදිලි කිරීමක් එක් කළ අතර සමස්ත පිළිතුරම රසවත් කියවීමකි.
රයන්ෆේස්කොට්ලන්ඩ්

මෙම කරුණු තුන පිටුපස ඇති සංකල්ප පැහැදිලි කරන පිළිතුරු රාශියක් මට පෙනේ. නමුත් ව්‍යාපෘති ගුණාංගවල සංස්කරණය කළ හැකි අනුවාද අංක සමඟ ඒවා සම්බන්ධ වන්නේ කෙසේද? ඔබ එකලස් කිරීමේ තොරතුරු ක්ලික් කළ විට ... ඔබට අනුවාද දෙකක් වෙනස් කිරීමේ විකල්පය ලැබේ. එකලස් කිරීමේ අනුවාදය වෙනස් කිරීමෙන් user.config සොයාගත් ෆෝල්ඩරය වෙනස් වන අතර ගොනු අනුවාදය වෙනස් කිරීමෙන් ඔබ exe ගොනුව දකුණු-ක්ලික් කර එහි ගුණාංග වෙත යන විට පෙන්වන අනුවාද අංකය වෙනස් කරයි. ඉතින් එම අනුවාද අංක දෙක එකලස් කිරීමේ අනුවාදය, එකලස් ෆයිල්වර්ෂන් සහ එකලස් ඉන්ෆොමේෂන් වර්ෂන් වලට අනුරූප වන්නේ කෙසේද?
කයිල් ඩෙලනි

ඔබ මුලින් ලියා ඇති බ්ලොග් සටහනට සබැඳිය 404 ක් ලබා දෙයි. ඒ සඳහා නව ස්ථානයක් තිබේද?
රොබ් කේ

@ රොබ්: අහ්, සමාව ඉල්ලන්න. එම වෙබ් අඩවිය අක්‍රියයි, නමුත් බ්ලොග් සටහනේ සම්පූර්ණ අන්තර්ගතය පිළිතුරෙන් ප්‍රතිනිෂ්පාදනය වන බැවින් ඔබට කිසිවක් මග හැරෙන්නේ නැත. මම දැන් කැඩුණු සබැඳිය ඉවත් කරමි.
ඩැනියෙල් ෆෝචූනොව්

43

AssemblyVersion.NET හි අභ්‍යන්තරව රැඳී සිටින අතර AssemblyFileVersionවින්ඩෝස් දකින දේ එයයි. ඔබ ඩිරෙක්ටරියේ වාඩි වී සිටින එකලස් කිරීමේ ගුණාංග වෙත ගොස් අනුවාද පටිත්ත වෙත මාරු AssemblyFileVersionවන්නේ නම්, ඔබ ඉහළින්ම දකින්නේ එයයි. ඔබ අනුවාදය අනුව ගොනු වර්ග කරන්නේ නම්, එක්ස්ප්ලෝරර් භාවිතා කරන්නේ මෙයයි.

AssemblyInformationalVersion"නිෂ්පාදන අනුවාදය" සඳහා සිතියම් සහ එය තනිකරම "මිනිස් භාවිතය" සඳහා අදහස් කෙරේ.

AssemblyVersionනිසැකවම වඩාත්ම වැදගත් ය, නමුත් මම ද නොයන්නෙමි AssemblyFileVersion. ඔබ සපයන්නේ නැත්නම් AssemblyInformationalVersion, ඔබේ අනුවාද අංකයේ “සංශෝධන” කොටස ඉවත් කර මේජර්.මිනෝර්.බිල්ඩ් වෙතින් ඉවත් කිරීමෙන් සම්පාදකයා එය ඔබ වෙනුවෙන් එකතු කරයි.


23

AssemblyInformationalVersionහා AssemblyFileVersionඔබ විසින් ගොනු ගුණ නරඹන විසින් වින්ඩෝස් එක්ස්ප්ලෝරර් මගින් ගොනු මත "සංස්කරණය" තොරතුරු බැලීමට විට ප්රදර්ශනය කර ඇත. මෙම ගුණාංග සැබවින්ම VERSION_INFOසම්පාදකයා විසින් නිර්මාණය කරන ලද සම්පතකට සම්පාදනය වේ.

AssemblyInformationalVersion යනු "නිෂ්පාදන අනුවාදය" අගයයි. AssemblyFileVersionයනු "ගොනු අනුවාදය" අගයයි.

මෙම AssemblyVersion.NET එක්රැස්වීම් සඳහා විශේෂිත වන අතර, ක්රියාත්මක වීමේදී එහි පූරණය / බඳින්න කිරීමට රැස්වීමේ වන අනුවාදය දැන ගැනීමට .NET එකලස් කාරකය විසින් භාවිතා කරනු ලබයි.

මේ අතුරින් .NET විසින් නියත වශයෙන්ම අවශ්‍ය වන්නේ එකම ගුණාංගයයි AssemblyVersion. අවාසනාවකට එය විචක්ෂණ ලෙස වෙනස් වන විට බොහෝ ගැටලු ඇති කළ හැකිය, විශේෂයෙන් ඔබ ඔබේ එක්රැස්වීම් නම් කිරීම ශක්තිමත් නම්.


9

මෙම ප්‍රශ්නය වත්මන් ලෙස තබා ගැනීම සඳහා AssemblyInformationalVersionනුජෙට් විසින් භාවිතා කරන සහ ඇසුරුම් අනුවාදය පිළිබිඹු කරන ඉස්මතු කිරීම වටී ඕනෑම පෙර නිදහස් ෙපර ෙයදුම ඇතුළුව.

උදාහරණයක් ලෙස 1.0.3 හි එකලස් කිරීමේ අනුවාදය. * Asp.net core dotnet-cli සමඟ ඇසුරුම් කර ඇත

dotnet pack --version-suffix ci-7 src/MyProject

1.0.3-ci-7 අනුවාදය සහිත පැකේජයක් නිෂ්පාදනය කරයි, එමඟින් ඔබට පරාවර්තනයෙන් පරීක්ෂා කළ හැකිය:

CustomAttributeExtensions.GetCustomAttribute<AssemblyInformationalVersionAttribute>(asm);

7

තවත් කරුණු කිහිපයක් සඳහන් කිරීම වටී:

1) ජනනය කරන ලද එකලස් ගොනුව සඳහා වින්ඩෝස් එක්ස්ප්ලෝරර් ගුණාංග සංවාදයේ පෙන්වා ඇති පරිදි, "ගොනු අනුවාදය" යනුවෙන් ස්ථාන දෙකක් තිබේ. සංවාදයේ ශීර්ෂයේ දැක්වෙන තැනැත්තා පෙන්වන්නේ එකලස් කිරීමේ අනුවාදය මිස එකලස් ෆයිල්වර්ෂන් නොවේ.

වෙනත් අනුවාද තොරතුරු අංශයේ, "ගොනු අනුවාදය" නමින් තවත් අංගයක් ඇත. AssemblyFileVersion ලෙස ඇතුළත් කර ඇති දේ ඔබට දැක ගත හැකි ස්ථානය මෙයයි.

2) AssemblyFileVersion යනු සරල පෙළකි. එකලස් කිරීමේ අනුවාදය කරන අංක යෝජනා ක්‍රම සීමාවන්ට එය අනුකූල විය යුතු නැත (<Bild> <65K, උදා). එය 3.2 විය හැකිය. <ටැග් පෙළ මුදාහරින්න>. <datetime>, ඔබ කැමති නම්. ඔබේ ගොඩනැගීමේ පද්ධතියට ටෝකන පිරවීමට සිදුවේ.

එපමණක් නොව, එකලස් කිරීමේ අනුවාදය ආදේශක කාඩ්පත් ආදේශනයට යටත් නොවේ. AssemblyInfo.cs හි ඔබට “3.0.1. *” හි අගයක් තිබේ නම්, එය හරියටම අනෙක් අනුවාද තොරතුරු-> ගොනු අනුවාද මූලද්‍රව්‍යය තුළ පෙන්වනු ඇත.

3) සංඛ්‍යාත්මක ගොනු අනුවාද අංක හැර වෙනත් දෙයක් භාවිතා කිරීමේ ස්ථාපකයෙකුට ඇති බලපෑම මම නොදනිමි.


2

එක්රැස්වීමේ එකලස් කිරීමේ අනුවාදය වෙනස් කළ විට, එයට ශක්තිමත් නමක් තිබේ නම්, යොමු කිරීමේ එකලස් නැවත සකස් කිරීම අවශ්‍ය වේ, එසේ නොමැතිනම් එකලස් කිරීම පටවන්නේ නැත! එයට ප්‍රබල නමක් නොමැති නම්, ව්‍යාපෘති ගොනුවට පැහැදිලිව එකතු කර නොමැති නම්, එය ගොඩනඟන විට ප්‍රතිදාන නාමාවලියට පිටපත් නොකෙරේ, එවිට ඔබට එකලස් කිරීම් මත පදනම්ව මග හැරෙනු ඇත, විශේෂයෙන් ප්‍රතිදාන නාමාවලිය පිරිසිදු කිරීමෙන් පසුව.


මෙය ඉතා රසවත් ය! “ප්‍රතිදාන නාමාවලියට පිටපත් නොකෙරේ” කොටස ගැන ඔබට විස්තරාත්මකව විස්තර කළ හැකිද? සමහර විට මෙම හැසිරීම අර්ථ දක්වා ඇති ස්ථානයට සබැඳියක් විය හැකිය. සමහර වක්‍ර පරායත්තතා සමහර විට පිටපත් කළේ ඇයිදැයි මට තේරුණේ නැත, නමුත් සෑම විටම නොවේ. මෙය 100% ක් සම්බන්ධ විය යුතුය.
julealgon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.