HTTPS ΠΈ MSBuild DeveloperPacks: настройка окруТСния

БоврСмСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.NET Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π΅Π· ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ настроСнного инструмСнтария сборки. Когда Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с запросом, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ HTTPS, MSBuild ΠΈ DeveloperPacks, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ комплСксной настройкС срСды, которая позволяСт ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ зависимостями ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Ошибки Π½Π° стыкС этих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ часто приводят ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ сборка прСрываСтся, Π° NuGet ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ.

Основная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ MSBuild (Microsoft Build Engine) β€” это Π½Π΅ просто компилятор, Π° цСлая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для сборки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Для Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ спСцифичСскиС Π½Π°Π±ΠΎΡ€Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², извСстныС ΠΊΠ°ΠΊ DeveloperPacks ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ нацСливания (Targeting Packs). Π‘Π΅Π· Π½ΠΈΡ… систСма Π½Π΅ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… вСрсий.NET Framework ΠΈΠ»ΠΈ.NET Core. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с этим, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ бСзопасности HTTPS ΠΌΠΎΠ³ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ссли сСртификаты Π½Π΅ Π΄ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ систСмой.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ взаимодСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ установки Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ способы Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с сСтСвым доступом. Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки, связанныС с отсутствиСм Ρ„Π°ΠΉΠ»ΠΎΠ² нацСливания, ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ прокси-сСрвСры для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ NuGet. ПониманиС этих процСссов критичСски Π²Π°ΠΆΠ½ΠΎ для любого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС ΠΈΠ»ΠΈ с legacy-ΠΊΠΎΠ΄ΠΎΠΌ.

АрхитСктура MSBuild ΠΈ Ρ€ΠΎΠ»ΡŒ Developer Packs

Π”Π²ΠΈΠΆΠΎΠΊ MSBuild являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ процСсса сборки Π² экосистСмС Microsoft. Он Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, .csproj ΠΈΠ»ΠΈ .vbproj) ΠΈ опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Однако сам ΠΏΠΎ сСбС Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π΅ содСрТит компиляторов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для всСх вСрсий.NET. ИмСнно здСсь Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΈΠ³Ρ€Ρƒ DeveloperPacks. Π­Ρ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ содСрТат справочныС сборки (reference assemblies), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ компилятору ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ API ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Когда Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ"SDK ΠΈΠ»ΠΈ Targeting Pack" Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ MSBuild Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ структуру.NET Framework, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. НапримСр, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ создан для.NET Framework 4.7.2, Π° Π½Π° машинС установлСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 4.8, сборка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 4.5, Π° установлСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 4.0, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ критичСская ошибка. DeveloperPacks Ρ€Π΅ΡˆΠ°ΡŽΡ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, прСдоставляя Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.

Π’Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ Runtime ΠΈ Developer Pack. Runtime Π½ΡƒΠΆΠ΅Π½ для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Developer Pack β€” ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΈΡ… создания. Установка Visual Studio ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½ΠΎ Π² минималистичных сборочных окруТСниях (CI/CD сСрвСрах) ΠΈΠ»ΠΈ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с лСгковСсными IDE эти ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ часто приходится ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· установщик Visual Studio ΠΈΠ»ΠΈ нСзависимыС дистрибутивы.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ Reference Assemblies Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π­Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмым ошибкам Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (Runtime errors), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€Π°ΠΉΠ½Π΅ слоТно ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ.

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ срСды Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡƒΡ‚ΠΈ ΠΊ инструмСнтам Π±Ρ‹Π»ΠΈ прописаны Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния. MSBuild ΠΈΡ‰Π΅Ρ‚ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° систСмный PATH. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° (Developer Command Prompt), эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ запускС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ HTTPS ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с NuGet ΠΈ MSBuild

Π’ соврСмСнных условиях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π΅Π· постоянного обращСния ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ рСпозиториям ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTPS обСспСчиваСт ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ вашСй машиной ΠΈ сСрвСрами NuGet.org ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ MyGet feed'Π°ΠΌΠΈ. Однако ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ часто становятся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ сбоСв. Когда MSBuild пытаСтся Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (Restore), ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмныС настройки бСзопасности.NET ΠΈ Windows.

Одной ΠΈΠ· самых частых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся ошибка"Unable to load the service index" ΠΈΠ»ΠΈ"Certificate validation failed". Π­Ρ‚ΠΎ происходит, Ссли Π½Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ шлюзС стоит HTTPS-сканированиС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΎΠΉ сСртификата, Π° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ сСртификат ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² хранилиство Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… сСртификатов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ HTTPS соСдинСниС разрываСтся, ΠΈ сборка ΠΏΠ°Π΄Π°Π΅Ρ‚.

РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π»Π΅ΠΆΠΈΡ‚ Π² плоскости управлСния сСртификатами. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ сСртификат прокси-сСрвСра ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Trusted Root Certification Authorities. Π’Π°ΠΊΠΆΠ΅ стоит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ настройки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ NUGET_HTTP_TIMEOUT, Ссли ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ соСдинСнии.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ спСцифичСскиС настройки Π² Ρ„Π°ΠΉΠ»Π΅ nuget.config, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки сСртификатов (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ!) ΠΈΠ»ΠΈ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ прокси. ИспользованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° disableSourceMapping ΠΈΠ»ΠΈ настройка http_proxy ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ HTTPS Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ Ρ‡Π°Ρ‰Π΅?
Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ Π½Π΅ довСряСтся
Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ соСдинСния
ΠŸΡ€ΠΎΠΊΡΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±Ρ‹Π»ΠΎ

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ установкС ΠΈ обновлСнию ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ MSBuild ΠΈ отсутствиС ошибок, связанных с вСрсиями Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ DeveloperPacks. Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ установщик Visual Studio, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ самой IDE. Π­Ρ‚ΠΎ обСспСчиваСт Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями ΠΈ зависимостями.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ установки Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. НС стоит ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ всё подряд, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ€Π°Π·Π΄ΡƒΠ²Π°Ρ‚ΡŒ диск, Π½ΠΎ основныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ нацСливания для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… вСрсий.NET Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ present. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСйствий для добавлСния Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° окруТСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

ПослС установки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² рСкомСндуСтся ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ обновились ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ инструмСнтов ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹Π·Π²Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ msbuild -version Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Если систСма Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ исполняСмый Ρ„Π°ΠΉΠ» ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ вСрсии, базовая настройка ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ….NET Core ΠΈΠ»ΠΈ.NET 5/6/7/8, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ SDK (Software Development Kits), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΈ компилятор, ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ нацСливания. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΎΠΊ ΠΎ Π±ΠΎΠΊ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями. MSBuild, входящий Π² состав Visual Studio, ΡƒΠΌΠ΅Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ SDK Π² зависимости ΠΎΡ‚ Ρ„Π°ΠΉΠ»Π° global.json Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ установкС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий.NET SDK порядок ΠΈΡ… установки Π²Π°ΠΆΠ΅Π½. Π‘ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ систСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ВсСгда провСряйтС, какая вСрсия Π°ΠΊΡ‚ΠΈΠ²Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ dotnet --info.

Настройка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° HTTPS ΠΈ MSBuild Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ систСмных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ Windows сущСствуСт мноТСство ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ PATH, NUGET_PACKAGES, DOTNET_ROOT ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ прокси.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ PATH Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΏΠ°ΠΏΠΊΠ°ΠΌ, Π³Π΄Π΅ Π»Π΅ΠΆΠ°Ρ‚ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ MSBuild (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΠ°ΠΏΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Program Files (x86)\Microsoft Visual Studio) ΠΈ dotnet CLI. Если ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Π²Ρ‹ Π½Π΅ смоТСтС Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку ΠΈΠ· любого мСста Π² систСмС, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· спСциализированных консолСй.

Для настройки HTTPS-прокси Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ http_proxy ΠΈ https_proxy Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ http://user:password@server:port. Π’Π°ΠΊΠΆΠ΅ для игнорирования Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСмСнная no_proxy.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ НазначСниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€ значСния
MSBuildSDKsPath Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ SDK C:\Program Files\dotnet\sdk\8.0.100\Sdks
NUGET_HTTP_TIMEOUT Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ запроса Π² миллисСкундах 600000 (10 ΠΌΠΈΠ½ΡƒΡ‚)
DOTNET_CLI_TELEMETRY_OPTOUT ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ 1
https_proxy АдрСс прокси-сСрвСра http://proxy.corp:8080

ИзмСнСниС систСмных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности. Ошибка Π² синтаксисС ΠΏΡƒΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ пСрСстанут Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. РСкомСндуСтся вСсти Π»ΠΎΠ³ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ настроСк ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ.

Диагностика ΠΈ устранСниС ошибок сборки

Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ установкС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ спСцифичСскиС ошибки. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС сцСнарии, ΠΊΠΎΠ³Π΄Π° связка HTTPS ΠΈ MSBuild Π΄Π°Π΅Ρ‚ сбой. ΠŸΠ΅Ρ€Π²Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° ошибок связана с ΡΠ΅Ρ‚ΡŒΡŽ:"The SSL connection could not be established". Π­Ρ‚ΠΎ прямой ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с сСртификатами ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ бСзопасности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TLS 1.0, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½).

Вторая Π³Ρ€ΡƒΠΏΠΏΠ° ошибок β€”"The reference assemblies for.NETFramework,Version=v4.x were not found". Π­Ρ‚ΠΎ классичСская Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ° DeveloperPacks. РСшСниС β€” Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ установщик Visual Studio ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π’Ρ€Π΅Ρ‚ΡŒΡ Π³Ρ€ΡƒΠΏΠΏΠ° β€” ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий NuGet, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ нСсовмСстимыС вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Для диагностики ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ /v:detailed ΠΈΠ»ΠΈ /v:diag ΠΏΡ€ΠΈ запускС MSBuild. Π­Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉΡˆΠΈΠΉ Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто остановки процСсса. Π˜Ρ‰ΠΈΡ‚Π΅ строки, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с"Error" ΠΈΠ»ΠΈ"Warning". Часто Π² Π»ΠΎΠ³Π΅ Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ URL ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ сСртификат возвращаСтся сСрвСром.

Бкрытая ошибка TLS 1.2

Π’ старых вСрсиях.NET Framework (Π΄ΠΎ 4.7) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ TLS 1.2. Если ваш сСрвСр NuGet Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ, сборка ΡƒΠΏΠ°Π΄Π΅Ρ‚. РСшСниС: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌ сСтСвым Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ строку: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ рССстр Windows.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с кэшСм NuGet. Иногда ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ с ошибками ΠΈΠ·-Π·Π° ΠΎΠ±Ρ€Ρ‹Π²Π° связи, ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² кэшС. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° кэша ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ dotnet nuget locals all --clear ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· мСню IDE часто Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со сборкой.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ процСсса сборки Π² CI/CD

Π’ контСкстС Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (CI/CD) вопросы установки DeveloperPacks ΠΈ настройки HTTPS стоят особСнно остро. Π‘Π±ΠΎΡ€ΠΎΡ‡Π½Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹ часто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° чистых ΠΎΠ±Ρ€Π°Π·Π°Ρ… ОБ, Π³Π΄Π΅ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ лишнСго. ИспользованиС Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с прСдустановлСнным SDK β€” соврСмСнный стандарт.

Однако, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСры сборки (On-Premise), Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… вСрсий Targeting Packs Π½Π° машинС Π°Π³Π΅Π½Ρ‚Π°. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ развСртывания Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ рССстра ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Для ускорСния сборки Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ сСти рСкомСндуСтся Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ прокси-кэш для NuGet (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Azure Artifacts ΠΈΠ»ΠΈ ProGet). Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· HTTPS ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈ снизит Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΊΠ°Π½Π°Π» связи. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ довСрия сСртификатам, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ довСряСтС своСму Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ сСрвСру.

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ. MSBuild ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ /m (multi-threading), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. На ΠΌΠΎΡ‰Π½Ρ‹Ρ… сСрвСрах это Π΄Π°Π΅Ρ‚ ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ прирост скорости, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ достаточного количСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ вСрсии.NET Framework установлСны Π² систСмС?

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ рССстр Windows (regedit) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Release ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PowerShell ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: Get-ChildItem -Path'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse -ErrorAction SilentlyContinue | Get-ItemProperty -Name Version -ErrorAction SilentlyContinue | Select-Object PSChildName, Version.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MSBuild Π±Π΅Π· Visual Studio?

Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ. БущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ дистрибутив"Build Tools for Visual Studio". Он вСсит мСньшС ΠΏΠΎΠ»Π½ΠΎΠΉ IDE ΠΈ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компиляторы, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ MSBuild. Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для сСрвСров сборки ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… VS Code ΠΈΠ»ΠΈ Rider.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли NuGet Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ прокси?

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» nuget.config Π² ΠΏΠ°ΠΏΠΊΠ΅ %AppData%\NuGet. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ сСкция с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ http_proxy ΠΈ http_proxy.user. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΠΈ антивирус процСсс nuget.exe ΠΈΠ»ΠΈ dotnet.exe.