НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° CAD прилоТСния (Π² моя случай Ρ‚ΠΎΠ²Π° са AutoCAD, Revit ΠΈ Renga) с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ сС появява Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ - ΠΈΠ·Π»ΠΈΠ·Π°Ρ‚ Π½ΠΎΠ²ΠΈ вСрсии Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, трябва Π΄Π° сС промСнят Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ API ΠΈ Π΄Π° сС правят Π½ΠΎΠ²ΠΈ вСрсии Π½Π° плъгини.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ само Π΅Π΄ΠΈΠ½ плъгин ΠΈΠ»ΠΈ всС ΠΎΡ‰Π΅ стС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ самоук Π² Ρ‚ΠΎΠ·ΠΈ бизнСс, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ мСста Π² Π½Π΅Π³ΠΎ ΠΈ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ Π½ΠΎΠ²Π° вСрсия Π½Π° плъгина. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ послСдващитС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² кодСкса Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π°Ρ‚ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ‚Ρ€ΡƒΠ΄.

Π‘ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠΈΡ‚ ΠΈ знания Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ няколко Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ процСс. ΠœΠΈΠ½Π°Ρ… ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ ΠΈ искам Π΄Π° Π²ΠΈ ΠΊΠ°ΠΆΠ° Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ стигнах ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΎΡ‚ дълго Π²Ρ€Π΅ΠΌΠ΅

Π’Ρ€ΡŠΠ·ΠΊΠΈ към Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

И Π·Π° Π΄Π° направя всичко просто, ясно ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌΠΎ, Ρ‰Π΅ опиша всичко, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ абстрактСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° плъгини.

Π”Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ Visual Studio (ΠΈΠΌΠ°ΠΌ вСрсията Community 2019. И Π΄Π° - Π½Π° руски) ΠΈ Π΄Π° създадСм Π½ΠΎΠ²ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. НСка Π³ΠΎ Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌ MySuperPluginForRevit

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Π©Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ плъгин Π·Π° Revit Π·Π° вСрсии 2015-2020. Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ създам Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (Net Framework Class Library) ΠΈ Ρ‰Π΅ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠ° MySuperPluginForRevit_2015

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Врябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към API Π½Π° Revit. Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²Ρ€ΡŠΠ·ΠΊΠΈ към Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (Ρ‰Π΅ трябва Π΄Π° инсталиратС всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ SDK ΠΈΠ»ΠΈ всички вСрсии Π½Π° Revit), Π½ΠΎ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ Ρ‰Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° NuGet. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ доста ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π½ΠΎ Π°Π· Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ своя.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ с дСсния Π±ΡƒΡ‚ΠΎΠ½ Π²ΡŠΡ€Ρ…Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° "ΠŸΠΎΠ·ΠΎΠ²Π°Π²Π°Π½Π΅Ρ‚ΠΎ'ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ ΠΌΠ΅Π½ΡŽΡ‚ΠΎ'ΠŸΡ€Π΅ΠΌΠ΅ΡΡ‚Π΅Ρ‚Π΅ packages.config Π² PackageReference...Β»

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Ако извСднъТ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° сС ΠΏΠ°Π½ΠΈΠΊΡŒΠΎΡΠ²Π°Ρ‚Π΅ Π½Π° Ρ‚ΠΎΠ²Π° място, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няма Π΄Π° ΠΈΠΌΠ° Π²Π°ΠΆΠ΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° със свойства Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° "ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅ локално”, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ трябва Π΄Π° сС настроим Ρ„Π°Π»ΡˆΠΈΠ², Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ сС ΠΏΠ°Π½ΠΈΠΊΡŒΠΎΡΠ²Π°ΠΉΡ‚Π΅ - ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .csproj Π² ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° вас Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Notepad ++) ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ запис Π·Π° нашия ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ‚Π°ΠΌ. Π‘Π΅Π³Π° тя ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

<PackageReference Include="ModPlus.Revit.API.2015">
  <Version>1.0.0</Version>
</PackageReference>

ДобавянС Π½Π° ΠΈΠΌΠΎΡ‚ към Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС. Π©Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Ρ‚Π°ΠΊΠ°:

<PackageReference Include="ModPlus.Revit.API.2015">
  <Version>1.0.0</Version>
  <ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>

Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ°.
НСка Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ - само си прСдставСтС, Ρ‡Π΅ Π½Π°ΡˆΠΈΡΡ‚ плъгин Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ API Π½Π° Revit, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ с пусканСто Π½Π° Π½ΠΎΠ²ΠΈ вСрсии. Π•, ΠΈΠ»ΠΈ просто трябва Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ Π½Π΅Ρ‰ΠΎ своС Π² ΠΊΠΎΠ΄Π°, Π² зависимост ΠΎΡ‚ вСрсията Π½Π° Revit, Π·Π° която ΠΏΡ€Π°Π²ΠΈΠΌ плъгина. Π—Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ Ρ‚Π°ΠΊΠΈΠ²Π° Ρ€Π°Π·Π»ΠΈΠΊΠΈ Π² ΠΊΠΎΠ΄Π°, Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ символи Π·Π° условна компилация. ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ свойствата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π° "ΠΌΠΎΠ½Ρ‚Π°ΠΆ"ΠΈ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ"НотиранС Π½Π° условна компилация» ΠΏΠΈΡˆΠ΅Ρ‚Π΅ R2015.

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŠΡ‚ трябва Π΄Π° сС Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° конфигурацията Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° конфигурацията Π·Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.

Π•, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ смС Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° със свойства, Π²Π΅Π΄Π½Π°Π³Π° ΠΎΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π° "App"ΠΈ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ"ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Β»ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° суфикса _2015Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π΄Π° Π΅ унивСрсално ΠΈ нСзависимо ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сглобката:

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Π’ моя случай, Π² крайния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΈΡ‚Π΅ ΠΎΡ‚ всички вСрсии сС добавят към Π΅Π΄Π½Π° ΠΏΠ°ΠΏΠΊΠ°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΌΠΎΠΈΡ‚Π΅ асСмблирания остават със суфикса Π½Π° формуляра _20xx. Но ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ суфикса ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката, Π°ΠΊΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π΄Π° сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ°ΠΏΠΊΠΈ.

Π”Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Ρ„Π°ΠΉΠ»Π° Class1.cs ΠΈ симулирайтС някакъв ΠΊΠΎΠ΄ Ρ‚Π°ΠΌ, ΠΊΠ°Ρ‚ΠΎ Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ вСрсии Π½Π° Revit:

namespace MySuperPluginForRevit
{
    using Autodesk.Revit.Attributes;
    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;

    [Regeneration(RegenerationOption.Manual)]
    [Transaction(TransactionMode.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
#if R2015
            TaskDialog.Show("ModPlus", "Hello Revit 2015");
#elif R2016
            TaskDialog.Show("ModPlus", "Hello Revit 2016");
#elif R2017
            TaskDialog.Show("ModPlus", "Hello Revit 2017");
#elif R2018
            TaskDialog.Show("ModPlus", "Hello Revit 2018");
#elif R2019
            TaskDialog.Show("ModPlus", "Hello Revit 2019");
#elif R2020
            TaskDialog.Show("ModPlus", "Hello Revit 2020");
#endif
            return Result.Succeeded;
        }
    }
}

Π’Π΅Π΄Π½Π°Π³Π° Π²Π·Π΅Ρ… ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ всички вСрсии Π½Π° Revit Π½Π°Π΄ вСрсията ΠΎΡ‚ 2015 Π³. (ΠΊΠΎΠΈΡ‚ΠΎ бяха ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° писанСто Π½Π° статията) ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π²Π·Π΅Ρ… ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° условни символи Π·Π° компилация, ΠΊΠΎΠΈΡ‚ΠΎ създавам спорСд ΡΡŠΡ‰ΠΈΡ шаблон.

Π”Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към основния Π°ΠΊΡ†Π΅Π½Ρ‚. БъздавамС Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, само Π·Π° вСрсията Π½Π° приставката ΠΏΠΎΠ΄ Revit 2016. ΠŸΠΎΠ²Ρ‚Π°Ρ€ΡΠΌΠ΅ всички ΡΡ‚ΡŠΠΏΠΊΠΈ, описани ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, замСствайки числото 2015 с числото 2016. Но Ρ„Π°ΠΉΠ»ΡŠΡ‚ Class1.cs ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ ΠΎΡ‚ новия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Π€Π°ΠΉΠ» с нСобходимия ΠΊΠΎΠ΄ - Class1.cs - Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ просто трябва Π΄Π° вмъкнСм Π²Ρ€ΡŠΠ·ΠΊΠ° към Π½Π΅Π³ΠΎ Π² Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Има Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° вмъкванС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ:

  1. Π”ΡŠΠ»Π³ΠΈ - ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с дСсния Π±ΡƒΡ‚ΠΎΠ½ Π½Π° ΠΌΠΈΡˆΠΊΠ°Ρ‚Π°, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° "Π”ΠΎΠ±Π°Π²ΠΈΒ»->Β«Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚", Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°, ΠΊΠΎΠΉΡ‚ΠΎ сС отваря, Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ ТСлания Ρ„Π°ΠΉΠ» ΠΈ вмСсто опцията"Π”ΠΎΠ±Π°Π²ΠΈΒ» ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ опция «ДобавянС ΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°Β»

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

  1. ΠšΡ€Π°Ρ‚ΠΊΠΎ - Π½Π°ΠΏΡ€Π°Π²ΠΎ Π² изслСдоватСля Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ТСлания Ρ„Π°ΠΉΠ» (ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Или Π΄ΠΎΡ€ΠΈ Ρ†Π΅Π»ΠΈ ΠΏΠ°ΠΏΠΊΠΈ) ΠΈ Π³ΠΎ ΠΏΠ»ΡŠΠ·Π½Π΅Ρ‚Π΅ Π² Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠ°Ρ‚ΠΎ Π΄ΡŠΡ€ΠΆΠΈΡ‚Π΅ натиснат клавиша Alt. ΠŸΡ€ΠΈ плъзганС Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ натиснСтС клавиша Alt, ΠΊΡƒΡ€ΡΠΎΡ€ΡŠΡ‚ Π½Π° ΠΌΠΈΡˆΠΊΠ°Ρ‚Π° Ρ‰Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ‚ Π·Π½Π°ΠΊ плюс Π½Π° стрСлка.
    UPS: Направих ΠΌΠ°Π»ΠΊΠΎ ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Π½Π΅ Π² Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ - Π·Π° Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ‚Π΅ няколко Ρ„Π°ΠΉΠ»Π°, трябва Π΄Π° стСгнСтС Shift + Alt!

Π‘Π»Π΅Π΄ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Ρ„Π°ΠΉΠ» във втория ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Class1.cs със ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΈΠΊΠΎΠ½Π° (синя стрСлка):

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π² контСкста Π½Π° ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄Π° сС ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΊΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡ‚ΠΎ сС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π° с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ условни символи Π·Π° компилация:

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

По Ρ‚Π°Π·ΠΈ схСма създавамС всички останали ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ (2017-2020 Π³.). Life hack - Π°ΠΊΠΎ ΠΏΠ»ΡŠΠ·Π³Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ€Π°Π·Ρ‚Π²ΠΎΡ€Π° Explorer Π½Π΅ ΠΎΡ‚ основния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π΅ Π²Π΅Ρ‡Π΅ са Π²ΠΌΡŠΠΊΠ½Π°Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄ΡŠΡ€ΠΆΠΈΡ‚Π΅ клавиша Alt!

ΠžΠΏΠΈΡΠ°Π½Π°Ρ‚Π° опция Π΅ доста Π΄ΠΎΠ±Ρ€Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ сС Π΄ΠΎΠ±Π°Π²ΠΈ Π½ΠΎΠ²Π° вСрсия Π½Π° плъгина ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ сС добавят Π½ΠΎΠ²ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ към ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° - всичко Ρ‚ΠΎΠ²Π° става ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡ€Π°Ρ‡Π½ΠΎ. И наскоро Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ… ΠΊΠ°ΠΊ Π΄Π° подрСдя всичко с Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към втория ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Π° магия

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚ΡƒΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΡŠΠ·ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅: β€žΠšΠ°ΠΊΠ²ΠΎ, ΠΏΠΎ дяволитС, описахтС ΠΏΡŠΡ€Π²ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π°ΠΊΠΎ статията Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π·Π° втория?!β€œ. И описах всичко, Π·Π° Π΄Π° станС ΠΏΠΎ-ясно Π·Π°Ρ‰ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ символи Π·Π° условна компилация ΠΈ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ мСста Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚. И сСга Π½ΠΈ става ΠΏΠΎ-ясно ΠΊΠ°ΠΊΠ²ΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° трябва Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅, оставяйки само Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

И Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ всичко ΠΏΠΎ-ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, няма Π΄Π° създавамС Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² тСкущия Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, създадСн ΠΏΠΎ ΠΏΡŠΡ€Π²ΠΈΡ Π½Π°Ρ‡ΠΈΠ½.

Π’Π°ΠΊΠ° Ρ‡Π΅, ΠΏΡŠΡ€Π²ΠΎ, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΌΠ΅ всички ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΎΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° основния (ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅). Π’Π΅Π·ΠΈ. ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π·Π° вСрсии 2016-2020. ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Ρ‚Π°ΠΌ.

ИмамС Π΅Π΄ΠΈΠ½ останал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ - MySuperPluginForRevit_2015. ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ свойства ΠΈ:

  1. Π’ Ρ€Π°Π·Π΄Π΅Π»Π° β€žAppΒ» ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ наставката ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката _2015 (ΠΏΠΎ-късно Ρ‰Π΅ станС ясно Π·Π°Ρ‰ΠΎ)
  2. Π’ Ρ€Π°Π·Π΄Π΅Π»Π° β€žΠΌΠΎΠ½Ρ‚Π°ΠΆΒ»ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ символа Π·Π° условна компилация R2015 ΠΎΡ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Има ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° Visual Studio - символитС Π·Π° условна компилация Π½Π΅ сС ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° със свойства Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ. Ако ΠΈΠΌΠ°Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° Π³ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ Ρ€ΡŠΡ‡Π½ΠΎ ΠΎΡ‚ .csproj Ρ„Π°ΠΉΠ»Π°. ВсС ΠΎΡ‰Π΅ ΠΎΠ±Π°Ρ‡Π΅ трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π² Π½Π΅Π³ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅.

ΠŸΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° Solution Explorer, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ суфикса _2015 ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° Ρ€Π΅Π΄ ΠΈ чувства Π½Π° пСрфСкционисти! ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ ΠΈ Π·Π°Ρ€Π΅Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° конфигурацията. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π·Π° БАЩ ΠžΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Ρ‚Π΅ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ няма Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Π·Π°Ρ‚ΠΎΠ²Π° Π³ΠΎ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅. БъздавамС Π½ΠΎΠ²ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ са Π½ΠΈ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ R2015, R2016, ..., R2020. Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ настройки ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ:

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

ΠžΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ отварямС Ρ„Π°ΠΉΠ»Π° с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .csproj Π² ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° вас Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π² Visual Studio - трябва Π΄Π° Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° правилният Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Ρ‰Π΅ бъдС Π² контСкстното мСню:

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ във Visual Studio Π΅ Π΄ΠΎΡ€ΠΈ Π·Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ подравнява ΠΈ подсказва.

Π’ΡŠΠ² Ρ„Π°ΠΉΠ»Π° Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ PropertyGroup - Π½Π°ΠΉ-ΠΎΡ‚Π³ΠΎΡ€Π΅ Π΅ ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ, Π° слСд Ρ‚ΠΎΠ²Π° ΠΈΠ΄Π²Π°Ρ‚ с условията. Π’Π΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ свойствата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚ΠΎΠΉ Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π±Π΅Π· условия, Π·Π°Π΄Π°Π²Π° ΠΎΠ±Ρ‰ΠΈ свойства, Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ с условия, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, промСнят някои свойства Π² зависимост ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅.

ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π΄ΠΎ общия (ΠΏΡŠΡ€Π²ΠΈ) Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ PropertyGroup ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΈΠΌΠΎΡ‚Π° ИмС Π½Π° сборка - Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката ΠΈ трябва Π΄Π° Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π±Π΅Π· суфикс _2015. Ако ΠΈΠΌΠ° суфикс, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ Π³ΠΎ.

НамиранС Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ с условиС

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

НС Π½ΠΈ трябва - ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ Π³ΠΎ.

Π•Π»Π΅ΠΌΠ΅Π½Ρ‚ с условиС

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

Ρ‰Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ свойства, Π·Π° Π΄Π° отговарят Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ - Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π°, Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ символитС Π·Π° условна компилация ΠΈ Ρ‚.Π½.

Π‘Π΅Π³Π° създавамС Π½ΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ PropertyGroup Π·Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π’ Ρ‚Π΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ просто трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ свойства:

  • Π˜Π·Ρ…ΠΎΠ΄Π΅Π½ ΠΏΡŠΡ‚ - ΠΈΠ·Ρ…ΠΎΠ΄Π½Π° ΠΏΠ°ΠΏΠΊΠ°. Π—Π°Π΄Π°Π΄ΠΎΡ… стойност ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ binR20xx
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Ρ‚Π΅ константи са символи Π·Π° условна компилация. Врябва Π΄Π° сС настрои Π½Π° TRACE;R20xx
  • TargetFrameworkVersion – ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π° вСрсия. Π Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ вСрсии Π½Π° Revit API изискват Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ.
  • ИмС Π½Π° сборка – ΠΈΠΌΠ΅ Π½Π° сборка (Ρ‚.Π΅. ΠΈΠΌΠ΅ Π½Π° Ρ„Π°ΠΉΠ»). ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ Π½Π° сборка, Π½ΠΎ Π·Π° унивСрсалност Π²ΠΈ ΡΡŠΠ²Π΅Ρ‚Π²Π°ΠΌ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ стойността $(AssemblyName)_20xx. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°, ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ…ΠΌΠ΅ суфикса ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката

Най-Π²Π°ΠΆΠ½Π°Ρ‚Π° характСристика Π½Π° всички Ρ‚Π΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π΅, Ρ‡Π΅ Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ просто Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π±Π΅Π· ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΄Π° сС промСнят. По-късно Π² статията Ρ‰Π΅ ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π° цялото ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π½Π° .csproj Ρ„Π°ΠΉΠ»Π°.

Π•, Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ свойствата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° - Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Но ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (NuGet ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ). Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ са ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ItemGroup. Но Ρ‚ΡƒΠΊ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ - Ρ‚ΠΎΠ·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° условия ΠΊΠ°Ρ‚ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ PropertyGroup. МоТС Π±ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΡ€ΠΈ бъг Π½Π° Visual Studio, Π½ΠΎ Π°ΠΊΠΎ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ няколко Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° ItemGroup с условия Π·Π° конфигурация ΠΈ Π²ΠΌΡŠΠΊΠ½Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ към NuGet ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π²ΡŠΡ‚Ρ€Π΅, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ промяна Π½Π° конфигурацията всички посочСни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ към ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

На ΠΏΠΎΠΌΠΎΡ‰ Π½ΠΈ ΠΈΠ΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ ΠΏΠΎΠ·Π½Π°Ρ‚Π°Ρ‚Π° Π½ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π°ΠΊΠΎ-Ρ‚ΠΎΠ³Π°Π²Π°-Π΄Ρ€ΡƒΠ³ΠΎ.

ИзползванС Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅, Π·Π°Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ NuGet ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

Цялото ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π½Π° csproj

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0"  ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{5AD738D6-4122-4E76-B865-BE7CE0F6B3EB}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>MySuperPluginForRevit</RootNamespace>
    <AssemblyName>MySuperPluginForRevit</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>binDebug</OutputPath>
    <DefineConstants>DEBUG;R2015</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'R2015|AnyCPU' ">
    <OutputPath>binR2015</OutputPath>
    <DefineConstants>TRACE;R2015</DefineConstants>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <AssemblyName>$(AssemblyName)_2015</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'R2016|AnyCPU' ">
    <OutputPath>binR2016</OutputPath>
    <DefineConstants>TRACE;R2016</DefineConstants>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <AssemblyName>$(AssemblyName)_2016</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'R2017|AnyCPU' ">
    <OutputPath>binR2017</OutputPath>
    <DefineConstants>TRACE;R2017</DefineConstants>
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    <AssemblyName>$(AssemblyName)_2017</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'R2018|AnyCPU' ">
    <OutputPath>binR2018</OutputPath>
    <DefineConstants>TRACE;R2018</DefineConstants>
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    <AssemblyName>$(AssemblyName)_2018</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'R2019|AnyCPU' ">
    <OutputPath>binR2019</OutputPath>
    <DefineConstants>TRACE;R2019</DefineConstants>
    <TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
    <AssemblyName>$(AssemblyName)_2019</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'R2020|AnyCPU' ">
    <OutputPath>binR2020</OutputPath>
    <DefineConstants>TRACE;R2020</DefineConstants>
    <TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
    <AssemblyName>$(AssemblyName)_2020</AssemblyName>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Class1.cs" />
    <Compile Include="PropertiesAssemblyInfo.cs" />
  </ItemGroup>
  <Choose>
    <When Condition=" '$(Configuration)'=='R2015' ">
      <ItemGroup>
        <PackageReference Include="ModPlus.Revit.API.2015">
          <Version>1.0.0</Version>
          <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      </ItemGroup>
    </When>
    <When Condition=" '$(Configuration)'=='R2016' ">
      <ItemGroup>
        <PackageReference Include="ModPlus.Revit.API.2016">
          <Version>1.0.0</Version>
          <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      </ItemGroup>
    </When>
    <When Condition=" '$(Configuration)'=='R2017' ">
      <ItemGroup>
        <PackageReference Include="ModPlus.Revit.API.2017">
          <Version>1.0.0</Version>
          <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      </ItemGroup>
    </When>
    <When Condition=" '$(Configuration)'=='R2018' ">
      <ItemGroup>
        <PackageReference Include="ModPlus.Revit.API.2018">
          <Version>1.0.0</Version>
          <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      </ItemGroup>
    </When>
    <When Condition=" '$(Configuration)'=='R2019' ">
      <ItemGroup>
        <PackageReference Include="ModPlus.Revit.API.2019">
          <Version>1.0.0</Version>
          <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      </ItemGroup>
    </When>
    <When Condition=" '$(Configuration)'=='R2020' or '$(Configuration)'=='Debug'">
      <ItemGroup>
        <PackageReference Include="ModPlus.Revit.API.2020">
          <Version>1.0.0</Version>
          <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      </ItemGroup>
    </When>
  </Choose>
  <Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
</Project>

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Π² Π΅Π΄Π½ΠΎ ΠΎΡ‚ условията посочих Π΄Π²Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Ρ€Π΅Π· Π˜Π›Π˜. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ нСобходимият ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ‰Π΅ бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° конфигурацията Debug.

И Ρ‚ΡƒΠΊ смС ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π°Π»Π½ΠΈ. Π—Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ конфигурацията, ΠΎΡ‚ която сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ Π² контСкстното мСню Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° "Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ всички NuGet пакСти” ΠΈ Π²ΠΈΠΆΡ‚Π΅ ΠΊΠ°ΠΊ сС промСнят Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

И Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ стигнах Π΄ΠΎ задънСна ΡƒΠ»ΠΈΡ†Π° - Π·Π° Π΄Π° ΡΡŠΠ±Π΅Ρ€Π΅ΠΌ всички ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ навСднъТ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ партидния ΠΌΠΎΠ½Ρ‚Π°ΠΆ (мСню "ΠΌΠΎΠ½Ρ‚Π°ΠΆΒ»->Β«ΠŸΠ°Ρ€Ρ‚ΠΈΠ΄Π΅Π½ ΠΌΠΎΠ½Ρ‚Π°ΠΆβ€œ), Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π½Π΅ сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. И ΠΏΡ€ΠΈ сглобяванСто Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Π½Π΅ сС случва, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π° тСория трябва. НС Π½Π°ΠΌΠ΅Ρ€ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ със стандартни срСдства. И Π½Π°ΠΉ-вСроятно Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° Π½Π° Visual Studio.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π·Π° ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π΅Π½ ΠΌΠΎΠ½Ρ‚Π°ΠΆ бСшС Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° спСциална Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π° систСма Π·Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆ Nuke. Наистина Π½Π΅ исках Ρ‚ΠΎΠ²Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ смятам, Ρ‡Π΅ Π΅ излишно ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° плъгини, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. И Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° "Π—Π°Ρ‰ΠΎ Nuke?" ΠžΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ Π΅ прост - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π³ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

И Ρ‚Π°ΠΊΠ°, ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°), Π·Π°Π΄Ρ€ΡŠΠΆΡ‚Π΅ клавиша ΠŸΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΈ Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ с дСсния Π±ΡƒΡ‚ΠΎΠ½ Π²ΡŠΡ€Ρ…Ρƒ ΠΏΡ€Π°Π·Π½ΠΎ място Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° - Π² контСкстното мСню ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° "ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° PowerShell Ρ‚ΡƒΠΊ".

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

Ако Π½Π΅ стС инсталирали Π±ΠΎΠΌΠ±Π°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡŠΡ€Π²ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

dotnet tool install Nuke.GlobalTool –global

Π‘Π΅Π³Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΠΎΠΌΠ±Π°Ρ‚Π° ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ°Π½Π΅Π½ΠΈ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π±ΠΎΠΌΠ±Π°Ρ‚Π° Π·Π° тСкущия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. НС Π·Π½Π°ΠΌ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ напиша ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π½Π° руски - Π½Π° английски Ρ‰Π΅ бъдС написано НС ΠΌΠΎΠΆΠ°Ρ… Π΄Π° намСря .nuke Ρ„Π°ΠΉΠ». Π˜ΡΠΊΠ°Ρ‚Π΅ Π»ΠΈ Π΄Π° настроитС компилация? [Π΄Π°/Π½Π΅]

НатиснСтС клавиша Y ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΈ настройки. ИскамС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-простата опция MSBuild, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ отговарямС ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° Π΅ΠΊΡ€Π°Π½Π½Π°Ρ‚Π° снимка:

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

НСка ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π² Visual Studio, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Π½ΠΈ Π΄Π° ΠΏΡ€Π΅Π·Π°Ρ€Π΅Π΄ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ към Π½Π΅Π³ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠŸΡ€Π΅Π·Π°Ρ€Π΅Π΄Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π²ΠΈΠΆΡ‚Π΅, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π² ΠΊΠΎΠΉΡ‚ΠΎ сС интСрСсувамС само ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» - Build.cs

НиС ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄ΠΈΠ½ плъгин ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с компилация Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Revit / AutoCAD

ΠžΡ‚Π²Π°Ρ€ΡΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» ΠΈ пишСм скрипт Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π° всички ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π•, ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ моя скрипт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ сами:

using System.IO;
using Nuke.Common;
using Nuke.Common.Execution;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tools.MSBuild;
using static Nuke.Common.Tools.MSBuild.MSBuildTasks;

[CheckBuildProjectConfigurations]
[UnsetVisualStudioEnvironmentVariables]
class Build : NukeBuild
{
    public static int Main () => Execute<Build>(x => x.Compile);

    [Solution] readonly Solution Solution;

    // If the solution name and the project (plugin) name are different, then indicate the project (plugin) name here
    string PluginName => Solution.Name;

    Target Compile => _ => _
        .Executes(() =>
        {
            var project = Solution.GetProject(PluginName);
            if (project == null)
                throw new FileNotFoundException("Not found!");

            var build = new List<string>();
            foreach (var (_, c) in project.Configurations)
            {
                var configuration = c.Split("|")[0];

                if (configuration == "Debug" || build.Contains(configuration))
                    continue;

                Logger.Normal($"Configuration: {configuration}");

                build.Add(configuration);

                MSBuild(_ => _
                    .SetProjectFile(project.Path)
                    .SetConfiguration(configuration)
                    .SetTargets("Restore"));
                MSBuild(_ => _
                    .SetProjectFile(project.Path)
                    .SetConfiguration(configuration)
                    .SetTargets("Rebuild"));
            }
        });
}

Π’Ρ€ΡŠΡ‰Π°ΠΌΠ΅ сС Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° PowerShell ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ пишСм ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π±ΠΎΠΌΠ±Π°Ρ‚Π° (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π±ΠΎΠΌΠ±Π°Ρ‚Π° посочванС Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ Π¦Π΅Π». Но Π½ΠΈΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π¦Π΅Π»ΠΊΠΎΠΉΡ‚ΠΎ стартира ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅). Π‘Π»Π΅Π΄ натисканС Π½Π° клавиша Enter Ρ‰Π΅ сС почувствамС ΠΊΠ°Ρ‚ΠΎ истински Ρ…Π°ΠΊΠ΅Ρ€ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ, ΠΊΠ°Ρ‚ΠΎ във Ρ„ΠΈΠ»ΠΌ, Π½Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‰Π΅ бъдС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сглобСн Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ PowerShell Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Visual Studio (мСню "ΠŸΡ€Π΅Π³Π»Π΅Π΄Β»->Β«Π”Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈΒ»->«Конзола Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° пакСти”), Π½ΠΎ всичко Ρ‰Π΅ бъдС Ρ‡Π΅Ρ€Π½ΠΎ ΠΈ бяло, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

Π’ΠΎΠ²Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° моята статия. Π‘ΠΈΠ³ΡƒΡ€Π΅Π½ съм, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ опцията Π·Π° AutoCAD. Надявам сС, Ρ‡Π΅ прСдставСният Ρ‚ΡƒΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈ своитС "ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ".

Бпасибо за вниманиС!

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€