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

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

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

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

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

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

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

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

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

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

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

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

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

Π‘Π»Π΅Π΄ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‰Ρ€Π°ΠΊΠ²Π°ΠΌΠ΅ с дСсния Π±ΡƒΡ‚ΠΎΠ½ Π½Π° ΠΌΠΈΡˆΠΊΠ°Ρ‚Π° Π²ΡŠΡ€Ρ…Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° Β«Π’Ρ€ΡŠΠ·ΠΊΠΈΒ» ΠΈ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚ ΠΌΠ΅Π½ΡŽΡ‚ΠΎ опцията Β«ΠŸΡ€Π΅ΠΌΠ΅ΡΡ‚ΠΈ packages.config Π² PackageReference…»

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

Ако Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° сС ΠΏΠ°Π½ΠΈΠΊΡŒΠΎΡΠ²Π°Ρ‚Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° с свойства Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° липсва Π²Π°ΠΆΠ½Π°Ρ‚Π° опция Β«ΠšΠΎΠΏΠΈΡ€Π°Π½Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎΒ», която Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ Π½Π° стойност false, Π½Π΅ сС ΠΏΠ°Π½ΠΈΠΊΡŒΠΎΡΠ²Π°ΠΉΡ‚Π΅ – ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .csproj Π² ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° вас Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (Π°Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Notepad++) ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ записа Π·Π° нашия ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

1.0.0

ДобавямС ΠΌΡƒ свойството runtime. Π©Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Ρ‚Π°ΠΊΠ°:

1.0.0
  runtime

Π‘Π΅Π³Π°, ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ°.
ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π½Π°ΠΏΡ€Π΅Π΄ – Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° прСдставим, Ρ‡Π΅ Π½Π°ΡˆΠΈΡΡ‚ плъгин Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ Revit API, ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π΅ промСняло с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, с ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²ΠΈ вСрсии. Или просто Π½ΠΈ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ Π½Π΅Ρ‰ΠΎ Π² ΠΊΠΎΠ΄Π° Π² зависимост ΠΎΡ‚ вСрсията Π½Π° Revit, Π·Π° която ΠΏΡ€Π°Π²ΠΈΠΌ плъгина. Π—Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° различия Π² ΠΊΠΎΠ΄Π° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ символи Π½Π° условна компилация. Π©Π΅ ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ свойствата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½ΠΈ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π° β€žΠ‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅β€œ ΠΈ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ β€žΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° условна ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡβ€œ Ρ‰Π΅ напишСм R2015.

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

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

Π”ΠΎΠΊΠ°Ρ‚ΠΎ смС Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈΡ‚Π΅ със свойства, Π²Π΅Π΄Π½Π°Π³Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π° β€žΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅β€œ ΠΈ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ β€žΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ пространство ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅β€œ ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΌΠ΅ суфикса _2015, Π·Π° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ унивСрсално ΠΈ нСзависимо ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката пространство:

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

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

ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към ΠΊΠΎΠ΄Π° Π½Π° Ρ„Π°ΠΉΠ»Π° 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", "Π—Π΄Ρ€Π°Π²Π΅ΠΉ, Revit 2015");
#elif R2016
            TaskDialog.Show("ModPlus", "Π—Π΄Ρ€Π°Π²Π΅ΠΉ, Revit 2016");
#elif R2017
            TaskDialog.Show("ModPlus", "Π—Π΄Ρ€Π°Π²Π΅ΠΉ, Revit 2017");
#elif R2018
            TaskDialog.Show("ModPlus", "Π—Π΄Ρ€Π°Π²Π΅ΠΉ, Revit 2018");
#elif R2019
            TaskDialog.Show("ModPlus", "Π—Π΄Ρ€Π°Π²Π΅ΠΉ, Revit 2019");
#elif R2020
            TaskDialog.Show("ModPlus", "Π—Π΄Ρ€Π°Π²Π΅ΠΉ, Revit 2020");
#endif
            return Result.Succeeded;
        }
    }
}

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

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

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

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

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

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

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

Π‘Π»Π΅Π΄ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π°, Π² нашия Π²Ρ‚ΠΎΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‰Π΅ сС появи Ρ„Π°ΠΉΠ» Class1.cs с подходяща ΠΈΠΊΠΎΠ½Π° (синя стрСлка):

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

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

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

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

ΠžΠΏΠΈΡΠ°Π½ΠΈΡΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅ напълно Π΄ΠΎΠ±ΡŠΡ€ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π½ΠΎΠ²Π° вСрсия Π½Π° ΠΏΠ»ΡƒΠ³ΠΈΠ½Π° ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° – всичко Ρ‚ΠΎΠ²Π° става ΠΌΠ½ΠΎΠ³ΠΎ досадно. Наскоро извСднъТ ΠΎΡΡŠΠ·Π½Π°Ρ… ΠΊΠ°ΠΊ Π΄Π° управлявам всичко Ρ‚ΠΎΠ²Π° с Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към втория ΠΌΠ΅Ρ‚ΠΎΠ΄.

Магия Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅

Ако стС ΠΏΡ€ΠΎΡ‡Π΅Π»ΠΈ Π΄ΠΎ Ρ‚ΡƒΠΊ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΡŠΠ·ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅: «А Π·Π°Ρ‰ΠΎ описвашС ΠΏΡŠΡ€Π²ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π°ΠΊΠΎ статията Π²Π΅Π΄Π½Π°Π³Π° Π΅ Π·Π° втория?!Β». Написах всичко, Π·Π° Π΄Π° станС ΠΏΠΎ-ясно Π·Π°Ρ‰ΠΎ Π½ΠΈ трябват символи Π·Π° условна компилация ΠΈ Π² ΠΊΠΎΠΈ мСста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½ΠΈ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚. И сСга Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ различия Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ трябва Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅, оставяйки само Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

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

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

Π’ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½ΠΈ остана Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” MySuperPluginForRevit_2015. ΠžΡ‚Π²Π°Ρ€ΡΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ свойства ΠΈ:

  1. На Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ‚Π° β€žΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅β€œ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΌΠ΅ суфиксa ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката _2015 (ΠΏΠΎ-късно Ρ‰Π΅ станС ясно Π·Π°Ρ‰ΠΎ)
  2. На Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ‚Π° β€žΠ‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅β€œ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΌΠ΅ символа Π½Π° условната компилация R2015 ΠΎΡ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅

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

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

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

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

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

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

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π² Visual Studio Π΅ ΠΎΡ‰Π΅ ΠΏΠΎ-ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ подравнява ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° подсказки.

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

ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към общия (ΠΏΡŠΡ€Π²ΠΈ) Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ PropertyGroup ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ свойството AssemblyName – Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° сборката ΠΈ Ρ‚ΠΎ трябва Π΄Π° бъдС Π±Π΅Π· суфикс _2015. Ако ΠΈΠΌΠ° суфикс, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ Π³ΠΎ.

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

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

Π’ΠΎΠΉ Π½Π΅ Π½ΠΈ Π΅ Π½ΡƒΠΆΠ΅Π½ – ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ Π³ΠΎ.

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

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

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

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

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

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

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

На ΠΏΠΎΠΌΠΎΡ‰ Π½ΠΈ ΠΈΠ΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ спорСд ΠΏΠΎΠ·Π½Π°Ρ‚Π°Ρ‚Π° Π½ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° if-then-else.

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

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

Debug
    AnyCPU
    {5AD738D6-4122-4E76-B865-BE7CE0F6B3EB}
    Library
    Properties
    MySuperPluginForRevit
    MySuperPluginForRevit
    v4.5
    512
    true
  
  
    true
    full
    false
    binDebug
    DEBUG;R2015
    prompt
    4
  
  
    binR2015
    TRACE;R2015
    v4.5
    $(AssemblyName)_2015
  
  
    binR2016
    TRACE;R2016
    v4.5
    $(AssemblyName)_2016
  
  
    binR2017
    TRACE;R2017
    v4.5.2
    $(AssemblyName)_2017
  
  
    binR2018
    TRACE;R2018
    v4.5.2
    $(AssemblyName)_2018
  
  
    binR2019
    TRACE;R2019
    v4.7
    $(AssemblyName)_2019
  
  
    binR2020
    TRACE;R2020
    v4.7
    $(AssemblyName)_2020
  
  
    
    
    
    
    
    
    
    
  
  
    
    
  
  
    
      
        
          1.0.0
          runtime
        
      
    
    
      
        
          1.0.0
          runtime
        
      
    
    
      
        
          1.0.0
          runtime
        
      
    
    
      
        
          1.0.0
          runtime
        
      
    
    
      
        
          1.0.0
          runtime
        
      
    
    
      
        
          1.0.0
          runtime

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

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

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

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

Π—Π°Ρ‚ΠΎΠ²Π° Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ бСшС Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° спСциална систСма Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Nuke. Π’ дСйствитСлност Π½Π΅ исках Ρ‚ΠΎΠ²Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ счита, Ρ‡Π΅ Π΅ излишно Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° плъгини, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌ Π΄Ρ€ΡƒΠ³Π° опция. А Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° Β«Π—Π°Ρ‰ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Nuke?Β» ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ Π΅ прост – ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π³ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

И Ρ‚Π°ΠΊΠ°, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°), Π·Π°Π΄Ρ€ΡŠΠΆΡ‚Π΅ клавиша Shift ΠΈ ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ с дясната мишка Π½Π° ΠΏΡ€Π°Π·Π½ΠΎ място Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° – Π² контСкстното мСню ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ опцията Β«ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ PowerShell ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Ρ‚ΡƒΠΊΒ».

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

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

dotnet tool install Nuke.GlobalTool –global

Π‘Π΅Π³Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° nuke ΠΈ Ρ‰Π΅ Π²ΠΈ бъдС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ nuke Π·Π° тСкущия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. НС Π·Π½Π°ΠΌ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ напиша ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π½Π° руски – Π½Π° английски Ρ‰Π΅ бъдС написано Could not find .nuke file. Do you want to setup a build? [y/n]

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

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

ΠŸΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ Π½Π° Visual Studio, която Ρ‰Π΅ Π½ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΡ€Π΅Π·Π°Ρ€Π΅Π΄ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠŸΡ€Π΅Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ build Π² ΠΊΠΎΠΉΡ‚ΠΎ Π½ΠΈ интСрСсува само Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» – 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(x => x.Compile);

    [Solution] readonly Solution Solution;

    // Ако ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (плъгин) са Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ, посочСтС ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (плъгин) Ρ‚ΡƒΠΊ
    string PluginName => Solution.Name;

    Target Compile => _ => _
        .Executes(() =>
        {
            var project = Solution.GetProject(PluginName);
            if (project == null)
                throw new FileNotFoundException("НС Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½!");

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

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

                Logger.Normal($"ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ: {configuration}");

                build.Add(configuration);

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

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

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

Π‘ Ρ‚ΠΎΠ²Π° моята статия ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°. Π£Π²Π΅Ρ€Π΅Π½ съм, Ρ‡Π΅ с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π·Π° AutoCAD Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС справитС сами. Надявам сС, Ρ‡Π΅ прСдставСният Ρ‚ΡƒΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈ своитС Β«ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΒ».

Благодаря Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ!

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster