{"id":28827,"date":"2019-04-16T00:00:00","date_gmt":"2019-04-15T22:00:00","guid":{"rendered":"https:\/\/blexin.com\/?p=28827"},"modified":"2021-05-20T20:16:42","modified_gmt":"2021-05-20T18:16:42","slug":"versionare-i-pacchetti-nuget","status":"publish","type":"post","link":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/","title":{"rendered":"Versionare i pacchetti NuGet"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"28828\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/attachment\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&amp;ssl=1\" data-orig-size=\"1024,608\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"2a5041f5-ee4c-4a47-b81f-e1408ad41a91\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-28828\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In questi anni, in Blexin abbiamo realizzato un CMS molto modulare e ad alte prestazioni, che consente di semplificare lo sviluppo di portali web in maniera indipendente dallo storage utilizzato per la persistenza dei dati. WebRight, questo \u00e8 il suo nome, utilizza al suo interno diversi plugin a seconda delle funzionalit\u00e0 che servono nel portale finale, e la parte di astrazione dello storage viene resa possibile grazie a&nbsp;<strong>Raptor<\/strong>, altro framework sempre sviluppato in Blexin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Durante lo sviluppo di questi prodotti, abbiamo pi\u00f9 volte sentito l&#8217;esigenza di avere un buon modo per versionare le dipendenze tra i plugin, onde evitare di ritrovarci nel classico problema di&nbsp;<em>dependency hell<\/em>&nbsp;(a questo&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Dependency_hell\" target=\"_blank\" rel=\"noreferrer noopener\">link<\/a>&nbsp;potete trovare maggiori dettagli). In questo articolo, vorrei raccontarvi come abbiamo cominciato a versionare le dipendenze nei nostri framework. Nei prossimi, invece, vedremo le diverse pratiche che abbiamo poi adottato per raggiungere quello che ad oggi \u00e8 il modo in cui versionamo il nostro software in azienda.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"stabilire-un-processo-di-versionamento\">Stabilire un processo di versionamento<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Quando si sviluppa software, un topic sempre abbastanza caldo \u00e8 quello del versionamento. Generalmente, il versionamento del software ha molto senso quando distribuiamo librerie o esponiamo API. Ci pu\u00f2 capitare, per\u00f2, di estendere il concetto a tutti i nostri software, sebbene in alcuni casi (ad esempio\u00a0una applicazione web), pu\u00f2 avere poco senso visto che il principale utilizzatore, il nostro customer, non ha interesse sui numeri di versione. Durante lo sviluppo dei framework WebRight e Raptor, abbiamo sin da subito stabilito un modo per poter versionare le release dei nostri plugin e soprattutto delle varie librerie condivise fra i due framework stessi. Siamo partiti nel definire un\u00a0<strong>processo<\/strong>\u00a0per farlo: ci servivano, nello specifico, una serie di regole per generare i numeri di versione. Una volta stabilite e condivise, abbiamo cominciato a versionare le nostre librerie usando l&#8217;attributo\u00a0<strong>AssemblyVersion<\/strong>\u00a0nella classe\u00a0<em>AssemblyInfo.cs<\/em>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/ Version information for an assembly consists of the following four values:\n\/\/\n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0 Major Version\n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0 Minor Version \n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0 Build Number\n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0 Revision\n\/\/\n\/\/ You can specify all the values or you can default the Revision and Build Numbers \n\/\/ by using the &#039;*&#039; as shown below:\n&#x5B;assembly: AssemblyVersion(&quot;1.0.*&quot;)]\n&#x5B;assembly: AssemblyFileVersion(&quot;1.0.*&quot;)]\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Abbiamo scelto di utilizzare le seguenti regole:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Major<\/strong>&nbsp;per noi \u00e8 un numero che viene incrementato in caso di una breaking change, qualcosa non compatibile con le precedenti versioni della libreria;<\/li><li><strong>Minor<\/strong>&nbsp;per noi \u00e8 una nuova feature che non rompe con le precedenti versioni o \u00e8 un bugfix.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In questo contesto, l&#8217;asterisco consente di generare i valori di&nbsp;<strong>Build<\/strong>&nbsp;e&nbsp;<strong>Revision<\/strong>&nbsp;in maniera automatica, svincolandoci dall&#8217;incarico. Siamo partiti impostando manualmente questi valori nella classe e, anche se questa cosa pu\u00f2 far storcere per un attimo il naso, occorre capire che non c&#8217;\u00e8 nulla di male a farlo, a patto che&nbsp;<em>lo si faccia con criterio e con un processo ben definito<\/em>. Naturalmente, una volta stabilito un processo, sarebbe banale non automatizzarlo con una build pipeline, per trarne tutti i benefici del caso.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"come-versionare-un-pacchetto-nuget\">Come versionare un pacchetto NuGet<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Adottato questo processo, \u00e8 stato poi semplice realizzare e condividere i pacchetti NuGet all&#8217;interno del team. Si pu\u00f2 ad esempio utilizzare\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/NuGetPackageExplorer\/NuGetPackageExplorer\" target=\"_blank\"><strong>NuGet Package Explorer<\/strong><\/a>, oppure la\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/chocolatey.org\/packages\/NuGet.CommandLine\/4.9.3\" target=\"_blank\"><strong>CLI<\/strong><\/a>\u00a0di NuGet per semplificare l&#8217;intera procedura. Dopo aver aggiunto al file AssemblyInfo.cs tutti i dettagli relativi al nostro progetto e aver compilato quest&#8217;ultimo, possiamo generare un file nuspec nella cartella dello stesso usando la CLI con il seguente comando:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nnuget spec\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Una volta creato il nuspec, possiamo eseguire il seguente comando per creare il nostro pacchetto NuGet:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nnuget pack nome_progetto.csproj -IncludeReferencedProjects\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">In particolare, il flag\u00a0<strong>-IncludeReferencedProjects<\/strong>\u00a0ci consente di includere tutte le dipendenze nel pacchetto finale. Tramite il NuGet Package Explorer, possiamo anche aprire il pacchetto NuGet generato per verificarne il contenuto:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"613\" height=\"1024\" data-attachment-id=\"28831\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/attachment\/1-3\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/1-3.png?fit=846%2C1414&amp;ssl=1\" data-orig-size=\"846,1414\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1-3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/1-3.png?fit=613%2C1024&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/1-3.png?resize=613%2C1024&#038;ssl=1\" alt=\"\" class=\"wp-image-28831\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/1-3-613x1024.png 613w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/1-3-480x802.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 613px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta terminata la fase di definizione, siamo pronti per condividere il nostro pacchetto su un feed NuGet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pushare-un-pacchetto-su-nuget\">Pushare un pacchetto su NuGet<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Se usiamo Azure DevOps possiamo creare facilmente un feed NuGet all&#8217;interno della sezione\u00a0<strong>Artifacts<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"782\" data-attachment-id=\"28834\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/attachment\/2-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2-4.png?fit=689%2C782&amp;ssl=1\" data-orig-size=\"689,782\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"2-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2-4.png?fit=689%2C782&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2-4.png?resize=689%2C782&#038;ssl=1\" alt=\"\" class=\"wp-image-28834\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2-4.png 689w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2-4-480x545.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 689px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta creato il feed, occorre generare un token per collegarsi ed effettuare il push dei pacchetti nelle impostazioni del proprio account. Nella pagina di connessione al feed, \u00e8 possibile trovare tutte le istruzioni e anche i comandi necessari per effettuare il push:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"990\" height=\"693\" data-attachment-id=\"28836\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/attachment\/3-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3-4.png?fit=990%2C693&amp;ssl=1\" data-orig-size=\"990,693\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"3-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3-4.png?fit=990%2C693&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3-4.png?resize=990%2C693&#038;ssl=1\" alt=\"\" class=\"wp-image-28836\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/3-4.png 990w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/3-4-980x686.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/3-4-480x336.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 990px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Non ci resta che caricare il pacchetto usando il comando:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nNuGet push -Source &quot;&lt;Source&gt;&quot; -ApyKey &lt;Key&gt; nome_package.nupkg\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Quando abbiamo caricato il nostro pacchetto, possiamo vedere le diverse versioni disponibili:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"964\" data-attachment-id=\"28838\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/attachment\/4-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/4-4.png?fit=712%2C964&amp;ssl=1\" data-orig-size=\"712,964\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"4-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/4-4.png?fit=712%2C964&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/4-4.png?resize=712%2C964&#038;ssl=1\" alt=\"\" class=\"wp-image-28838\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/4-4.png 712w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/4-4-480x650.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 712px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Infine, possiamo agganciarci al feed in Visual Studio andando in&nbsp;<strong>Tools -&gt; NuGet Package Manager -&gt; Package Manager Settings<\/strong>&nbsp;e ora, quando cerchiamo un pacchetto, visualizzeremo sia i pacchetti provenienti dal nostro feed che da altri e li possiamo importare nei nostri progetti.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"qual\u00e8-il-prossimo-passo\">Qual \u00e8 il prossimo passo?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">In questo articolo abbiamo visto il primo passo che abbiamo fatto in azienda per l&#8217;adozione del versionamento per i nostri pacchetti NuGet. Nel prossimo articolo, vedremo come l&#8217;uso di git e in particolare di GitFlow ci hanno aiutato a semplificare questo processo.<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Gestiamo il versionamento del nostro codice sulla base del processo di sviluppo e distribuiamolo con i pacchetti NuGet<\/p>\n","protected":false},"author":196716243,"featured_media":28828,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637374],"tags":[688637377,688637539,688637442,688637441],"class_list":["post-28827","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-azure","tag-devops-it","tag-raptor","tag-webright"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Versionare i pacchetti NuGet - Blexin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Versionare i pacchetti NuGet - Blexin\" \/>\n<meta property=\"og:description\" content=\"Gestiamo il versionamento del nostro codice sulla base del processo di sviluppo e distribuiamolo con i pacchetti NuGet\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-15T22:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-20T18:16:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"608\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Liccardi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Liccardi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/\"},\"author\":{\"name\":\"Antonio Liccardi\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/e1e90a04ec265b5c0712c5918ba01e8d\"},\"headline\":\"Versionare i pacchetti NuGet\",\"datePublished\":\"2019-04-15T22:00:00+00:00\",\"dateModified\":\"2021-05-20T18:16:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/\"},\"wordCount\":771,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1\",\"keywords\":[\"Azure\",\"DevOps\",\"Raptor\",\"Webright\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/\",\"name\":\"Versionare i pacchetti NuGet - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1\",\"datePublished\":\"2019-04-15T22:00:00+00:00\",\"dateModified\":\"2021-05-20T18:16:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/e1e90a04ec265b5c0712c5918ba01e8d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1\",\"width\":1024,\"height\":608},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/versionare-i-pacchetti-nuget\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Versionare i pacchetti NuGet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/e1e90a04ec265b5c0712c5918ba01e8d\",\"name\":\"Antonio Liccardi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g\",\"caption\":\"Antonio Liccardi\"},\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/author\\\/antonio-liccardiblexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Versionare i pacchetti NuGet - Blexin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/","og_locale":"it_IT","og_type":"article","og_title":"Versionare i pacchetti NuGet - Blexin","og_description":"Gestiamo il versionamento del nostro codice sulla base del processo di sviluppo e distribuiamolo con i pacchetti NuGet","og_url":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/","og_site_name":"Blexin","article_published_time":"2019-04-15T22:00:00+00:00","article_modified_time":"2021-05-20T18:16:42+00:00","og_image":[{"width":1024,"height":608,"url":"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1","type":"image\/png"}],"author":"Antonio Liccardi","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Antonio Liccardi","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/"},"author":{"name":"Antonio Liccardi","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/e1e90a04ec265b5c0712c5918ba01e8d"},"headline":"Versionare i pacchetti NuGet","datePublished":"2019-04-15T22:00:00+00:00","dateModified":"2021-05-20T18:16:42+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/"},"wordCount":771,"image":{"@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1","keywords":["Azure","DevOps","Raptor","Webright"],"articleSection":["Blog"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/","url":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/","name":"Versionare i pacchetti NuGet - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1","datePublished":"2019-04-15T22:00:00+00:00","dateModified":"2021-05-20T18:16:42+00:00","author":{"@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/e1e90a04ec265b5c0712c5918ba01e8d"},"breadcrumb":{"@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1","width":1024,"height":608},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/it\/blog\/versionare-i-pacchetti-nuget\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/it\/"},{"@type":"ListItem","position":2,"name":"Versionare i pacchetti NuGet"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/it\/#website","url":"https:\/\/blexin.com\/it\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/e1e90a04ec265b5c0712c5918ba01e8d","name":"Antonio Liccardi","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21b389ff00d1ab0b0721987c7aa5e16c34a1a5a8b774bfd4125507ea14f7ecce?s=96&d=identicon&r=g","caption":"Antonio Liccardi"},"url":"https:\/\/blexin.com\/it\/author\/antonio-liccardiblexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2a5041f5-ee4c-4a47-b81f-e1408ad41a91.png?fit=1024%2C608&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-7uX","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/users\/196716243"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/comments?post=28827"}],"version-history":[{"count":5,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28827\/revisions"}],"predecessor-version":[{"id":28842,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28827\/revisions\/28842"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media\/28828"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media?parent=28827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/categories?post=28827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/tags?post=28827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}