
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° CAD ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ( ΡΠΎΠ²Π° ΡΠ° AutoCAD, Revit ΠΈ Renga) Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅, ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΡ API ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΡΡ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅.
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ»ΡΠ³ΠΈΠ½ ΠΈΠ»ΠΈ ΡΡΠ΅ Π½ΠΎΠ²Π°ΠΊ Π² ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ° Π² Π½Π΅Π³ΠΎ ΠΈ Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΡΠ΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π°. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡΠ°.
Π‘ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠΈΡ ΠΈ Π·Π½Π°Π½ΠΈΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ. ΠΠ· ΡΡΠΌ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π» ΠΏΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΡ ΠΈ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ Ρ Π²Π°Ρ Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠΌ ΡΡΠΈΠ³Π½Π°Π» Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΅.
ΠΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ ΠΈ ΠΊΠΎΠΉΡΠΎ Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ .
ΠΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π Π·Π° Π΄Π° Π΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠΎΡΡΠΎ, Π½Π°Π³Π»Π΅Π΄Π½ΠΎ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΎ, ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½.
ΠΡΠ²Π°ΡΡΠΌΠ΅ Visual Studio (Π°Π· ΠΈΠΌΠ°ΠΌ Π²Π΅ΡΡΠΈΡ Community 2019. Π Π΄Π° β Π½Π° ΡΡΡΠΊΠΈ) ΠΈ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΠΊΠ° Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΠΌ MySuperPluginForRevit

Π©Π΅ ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° Revit Π·Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ 2015-2020. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°ΠΌ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ (ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠ»Π°ΡΠΎΠ²Π΅ .Net Framework) ΠΈ ΡΠ΅ Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΠΌ MySuperPluginForRevit_2015

Π’ΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ API Π½Π° Revit. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ SDK ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Revit), Π½ΠΎ Π½ΠΈΠ΅ ΡΠ΅ ΠΏΠΎΠ΅ΠΌΠ΅ΠΌ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΏΡΡ ΠΈ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° NuGet. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π΅ΠΌΠ°Π»ΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΡΠΈ.
Π‘Π»Π΅Π΄ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Ρ Π΄Π΅ΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π²ΡΡΡ Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Β«ΠΡΡΠ·ΠΊΠΈΒ» ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π² ΠΌΠ΅Π½ΡΡΠΎ Β«ΠΡΠ΅Ρ Π²ΡΡΠ»ΠΈ packages.config Π² PackageReferenceβ¦Β»

ΠΠΊΠΎ ΠΈΠ·Π²Π΅Π΄Π½ΡΠΆ ΡΡΠΊ Π²ΠΈ Π·Π°Π²Π»Π°Π΄Π΅Π΅ ΠΏΠ°Π½ΠΈΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Π½ΡΠΌΠ° Π²Π°ΠΆΠ½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Β«ΠΠΎΠΏΠΈΡΠ°ΠΉ Π»ΠΎΠΊΠ°Π»Π½ΠΎΒ», ΠΊΠΎΠΉΡΠΎ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ²Π°ΠΉΡΠ΅ β ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠ²Π°ΡΡΠΌΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .csproj Π² ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° Π²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ (Π°Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Notepad++) ΠΈ Π½Π°ΠΌΠΈΡΠ°ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ° Π·Π° Π½Π°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
1.0.0ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ ΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ runtime. ΠΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ ΡΠ°ΠΊΠ°:
1.0.0
runtimeΠ‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°Ρ Π² ΠΈΠ·Ρ
ΠΎΠ΄Π½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ°.
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ β Π²Π΅Π΄Π½Π°Π³Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΠ΅ Π½Π°ΡΠΈΡΡ ΠΏΠ»ΡΠ³ΠΈΠ½ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΠΎ ΠΎΡ Revit API, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ»ΠΎ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΏΡΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ. ΠΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΡΠΎ Π² ΠΊΠΎΠ΄Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Revit, Π·Π° ΠΊΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠ»ΡΠ³ΠΈΠ½Π°. ΠΠ° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΠ°Π·Π»ΠΈΠΊΠΈ Π² ΠΊΠΎΠ΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. Π©Π΅ ΠΎΡΠ²ΠΎΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ Π½Π° ΡΠ°Π±Π° βΠ‘Π±ΠΎΡΠΊΠ°β ΠΈ Π² ΠΏΠΎΠ»Π΅ΡΠΎ βΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π·Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡβ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ R2015.

ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Debug ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Release.
ΠΠΎΠΊΠ°ΡΠΎ ΡΠΌΠ΅ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ°, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ Π½Π° ΡΠ°Π±Π° βΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅β ΠΈ Π² ΠΏΠΎΠ»Π΅ΡΠΎ βΠΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°β ΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ ΡΡΡΠΈΠΊΡΠ° _2015, Π·Π° Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ°:

Π ΠΌΠΎΡ ΡΠ»ΡΡΠ°ΠΉ Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² Π΅Π΄Π½Π° ΠΏΠ°ΠΏΠΊΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ±ΠΎΡΠΊΠΈΡΠ΅ ΠΌΠΈ ΠΎΡΡΠ°Π²Π°Ρ Ρ ΡΡΡΠΈΠΊΡ ΠΎΡ Π²ΠΈΠ΄Π° _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 ΠΎΡ Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅.

Π€Π°ΠΉΠ»ΡΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΊΠΎΠ΄ β Class1.cs β Π²Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ Π½Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠΌΠ° Π΄Π²Π° Π½Π°ΡΠΈΠ½Π° Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° Π»ΠΈΠ½ΠΊΠΎΠ²Π΅:
- ΠΡΠ»ΡΠ³ β Π½Π°ΡΠΈΡΠΊΠ°ΠΌΠ΅ Ρ Π΄Π΅ΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΎΠΏΡΠΈΡΡΠ° Β«ΠΠΎΠ±Π°Π²ΠΈΒ» -> Β«Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΒ», Π² ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΡΠΎ ΠΏΡΠΎΠ·ΠΎΡΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΠΌΠ΅ Π½ΡΠΆΠ½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΡΠΈΡΡΠ° Β«ΠΠΎΠ±Π°Π²ΠΈΒ» ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΎΠΏΡΠΈΡΡΠ° Β«ΠΠΎΠ±Π°Π²ΠΈ ΠΊΠ°ΡΠΎ Π²ΡΡΠ·ΠΊΠ°Β»

- ΠΡΠ°ΡΡΠΊ β Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΡΠ΅ΡΠ°Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ Π½ΡΠΆΠ½ΠΈΡ ΡΠ°ΠΉΠ» (ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΡΠ΅Π»ΠΈ ΠΏΠ°ΠΏΠΊΠΈ) ΠΈ Π³ΠΈ ΠΏΠ»ΡΠ·Π³Π°ΠΌΠ΅ Π² Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π·Π°Π΄ΡΡΠΆΠ°ΠΉΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ° Alt. ΠΡΠΈ ΠΏΠ»ΡΠ·Π³Π°Π½Π΅ΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ ΠΊΡΡΡΠΎΡΡΡ Π½Π° ΠΌΠΈΡΠΊΠ°ΡΠ° ΡΠ΅ ΡΠΌΠ΅Π½Ρ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠΈ ΠΎΡ ΠΏΠ»ΡΡΡΠ΅ Π½Π° ΡΡΡΠ΅Π»ΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°Π΄ΡΡΠΆΠ°ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° Alt.
UPD: ΠΡΠΊΠ°ΠΊ ΡΠΈ Π²Π½Π΅ΡΠΎΡ ΠΎΠ±ΡΡΠΊΠ²Π°Π½Π΅ Π² ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ β Π·Π° Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠ»Π°, ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄ΡΡΠΆΠ°ΡΠ΅ Shift+Alt!
Π‘Π»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° Π² Π½Π°ΡΠΈΡ Π²ΡΠΎΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΡΠ°ΠΉΠ» Class1.cs Ρ ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΈΠΊΠΎΠ½ΠΊΠ° (ΡΠΈΠ½Ρ ΡΡΡΠ΅Π»ΠΊΠ°):

ΠΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΊΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π½Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ:

ΠΠΎ ΡΠ°Π·ΠΈ ΡΡ Π΅ΠΌΠ° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ (2017-2020). ΠΠ°ΠΉΡΡ Π°ΠΊ β Π°ΠΊΠΎ ΠΏΠ»ΡΠ·Π³Π°ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΠ΅ΡΠ°Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π΅ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΠ°ΡΠΎ Π²ΡΡΠ·ΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π΅ Π·Π°Π΄ΡΡΠΆΠ°ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° Alt!
ΠΠΏΠΈΡΠ°Π½ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄ΠΎΠ±ΡΡ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π° ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° β Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΠ°Π²Π° Π΄ΠΎΡΡΠ° Π΄ΠΎΡΠ°Π΄Π½ΠΎ. Π Π½Π°ΡΠΊΠΎΡΠΎ ΠΈΠ·Π²Π΅Π΄Π½ΡΠΆ ΠΎΡΡΠ·Π½Π°Ρ ΠΊΠ°ΠΊ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈ Ρ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΊΡΠΌ Π²ΡΠΎΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠ°Π³ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠΈΠ³Π½Π΅ΡΠ΅ Π΄ΠΎ ΡΡΠΊ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Β«ΠΠ°ΡΠΎ ΠΎΠΏΠΈΡΠ²Π°Ρ ΠΏΡΡΠ²ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, Π°ΠΊΠΎ ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π·Π° Π²ΡΠΎΡΠΈΡ?!Β». ΠΠΏΠΈΡΠ°Ρ Π²ΡΠΈΡΠΊΠΎ, Π·Π° Π΄Π° Π΅ ΠΏΠΎ-ΡΡΠ½ΠΎ Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ° Π½ΠΈ Π½ΡΠΆΠ½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΡΡΠ»ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ Π² ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅ΡΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅. Π ΡΠ΅Π³Π° Π½ΠΈ ΡΡΠ°Π²Π° ΠΏΠΎ-ΡΡΠ½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅, ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ.
Π Π·Π° Π΄Π° Π΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎ-ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΡΠΌΠ° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΏΡΡΠ²ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄.
Π ΡΠ°ΠΊΠ°, Π½Π° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΎΡΠ²Π΅Π½ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ (ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅). Π’.Π΅. ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Π·Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ 2016-2020. ΠΡΠ²Π°ΡΡΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
Π Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ β MySuperPluginForRevit_2015. ΠΡΠ²Π°ΡΡΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ:
- ΠΠ° ΡΠ°Π±Π° Β«ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ ΡΡΡΠΈΠΊΡΡΡ _2015 (ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ½ΠΎ Π·Π°ΡΠΎ)
- ΠΠ° ΡΠ°Π±Π° Β«Π‘Π±ΠΎΡΠΊΠ°Β» ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ R2015 ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Visual Studio ΠΈΠΌΠ° Π±ΡΠ³ β ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΌΠ°ΠΊΠ°Ρ ΡΠ΅ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ. ΠΠΊΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ Π±ΡΠ³, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΡΡΠ½ΠΎ ΠΎΡ ΡΠ°ΠΉΠ»Π° .csproj. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠΌ Π² Π½Π΅Π³ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅.
ΠΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ ΡΡΡΠΈΠΊΡa _2015 ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΠ΅Π΄ ΠΈ ΡΡΠ²ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠ΅ΡΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΠ·ΡΠΌ! ΠΡΠ²Π°ΡΡΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΡΠ°ΠΌ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΡΠ²Π°ΡΡΠΌΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Release Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π½Π΅ Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°, Π·Π°ΡΠΎΠ²Π° Ρ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅. Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ Π²Π΅ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ Π½ΠΈ ΠΈΠΌΠ΅Π½Π° R2015, R2016, β¦, R2020. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°:

ΠΡΠΈΠ²Π°ΠΌΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΎΡΠ²Π°ΡΡΠΌΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .csproj Π² ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° Π²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΈ Π² Visual Studio β ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΡΠΎ ΠΌΠ΅Π½Ρ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΠΎΠΏΡΠΈΡ:

Π Π΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π² Visual Studio Π΅ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡΡ ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π° ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅.
Π ΡΠ°ΠΉΠ»Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ β Π² ΡΠ°ΠΌΠΈΡ Π²ΡΡΡ Π΅ ΠΎΠ±ΡΠΈΡΡ, ΡΠ»Π΅Π΄Π²Π°Π½ ΠΎΡ ΡΠ΅Π·ΠΈ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ. Π’Π΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π°Π΄Π°Π²Π°Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅. ΠΡΡΠ²ΠΈΡΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π½ΡΠΌΠ° ΡΡΠ»ΠΎΠ²ΠΈΡ, Π·Π°Π΄Π°Π²Π° ΠΎΠ±ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π½ΡΠΊΠΎΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅.
ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΊΡΠΌ ΠΎΠ±ΡΠΈΡ (ΠΏΡΡΠ²ΠΈ) Π΅Π»Π΅ΠΌΠ΅Π½Ρ 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Ρ Ρ . ΠΠ° ΡΠ΅Π»ΡΠ° Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΌΠ΅ ΡΡΡΠΈΠΊΡΠ° ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ°
ΠΠ°ΠΉ-Π²Π°ΠΆΠ½Π°ΡΠ° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ β ΡΠ΅ ΠΌΠΎΠ³Π°Ρ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ. ΠΠΎ-Π΄ΠΎΠ»Ρ Π² ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»Π° .csproj.
ΠΠΎΠ±ΡΠ΅, Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅ β ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (NuGet ΠΏΠ°ΠΊΠ΅ΡΠΈ). ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ Π² Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ . ΠΠΎ Π΅ΡΠΎ Π΅Π΄Π½ΠΎ Π½Π΅Π΄ΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ β ΡΠΎΠ·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, ΠΊΠ°ΡΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ 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β ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½ΠΈ.

Π Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ ΡΡΠΈΠ³Π½Π°Ρ Π΄ΠΎ Π·Π°Π΄ΡΠ½Π΅Π½Π° ΡΠ»ΠΈΡΠ° β Π·Π° Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ (ΠΌΠ΅Π½Ρ βΠ‘Π±ΠΎΡΠΊΠ°Β» -> Β«ΠΠ°ΠΊΠ΅ΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅β), Π½ΠΎ ΠΏΡΠΈ ΡΠΌΡΠ½Π°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π½ΡΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. Π ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΠΎ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΠΎ ΠΈΠ΄Π΅Ρ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π½Π΅ Π½Π°ΠΌΠ΅ΡΠΈΡ . Π Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΡΡΠΎ Π΅ Π±ΡΠ³ Π½Π° Visual Studio.
ΠΠ°ΡΠΎΠ²Π° Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ . ΠΡΡΡΠ½ΠΎΡΡ Π½Π΅ ΠΈΡΠΊΠ°Ρ Π΄Π° Π³ΠΎ ΠΏΡΠ°Π²Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΌΡΡΠ°ΠΌ, ΡΠ΅ Π΅ ΠΈΠ·Π»ΠΈΡΠ½ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌ Π΄ΡΡΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π½Π° Π²ΡΠΏΡΠΎΡΠ° βΠΠ°ΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Nuke?β ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ Π΅ ΠΏΡΠΎΡΡ β ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π³ΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ°.
Π ΡΠ°ΠΊΠ°, ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°), Π·Π°Π΄ΡΡΠΆΠ°ΠΌΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° Shift ΠΈ ΡΡΠ°ΠΊΠ²Π°ΠΌΠ΅ Ρ Π΄Π΅ΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π½Π° ΠΌΠΈΡΠΊΠ°ΡΠ° Π²ΡΡΡ Ρ ΠΏΡΠ°Π·Π½ΠΎΡΠΎ ΠΌΡΡΡΠΎ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° β Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΡΠΎ ΠΌΠ΅Π½Ρ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠ½ΠΊΡΠ° βΠΡΠ²ΠΎΡΠΈ PowerShell ΡΡΠΊΒ».

ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ 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, Π·Π°ΡΠΎΠ²Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡΠΌΠ΅ ΠΊΠ°ΠΊΡΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π°:

ΠΡΠ΅Ρ Π²ΡΡΠ»ΡΠΌΠ΅ ΡΠ΅ Π² Visual Studio, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΡΠ΅Π·Π°ΡΠ΅Π΄ΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² Π½Π΅Π³ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΡΠ΅ Π΅ ΠΏΠΎΡΠ²ΠΈΠ» ΠΏΡΠΎΠ΅ΠΊΡ build , Π² ΠΊΠΎΠΉΡΠΎ Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» β Build.cs

ΠΡΠ²Π°ΡΡΠΌΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ΄ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΌΠΎΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ Π·Π° ΡΠ΅Π±Π΅ ΡΠΈ:
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;
// 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();
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 ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° nuke (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° nuke Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΠΎ Π¦Π΅Π». ΠΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π¦Π΅Π», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅). Π‘Π»Π΅Π΄ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠ° Enter, ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ²ΡΡΠ²Π°ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ Ρ Π°ΠΊΠ΅ΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ, ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ Π²ΡΠ² ΡΠΈΠ»ΠΌΠΈΡΠ΅.
ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ PowerShell Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ Visual Studio (ΠΌΠ΅Π½ΡΡΠΎ βΠΠ·Π³Π»Π΅Π΄Β» -> Β«ΠΡΡΠ³ΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈΒ» -> Β«ΠΠΎΠ½Π·ΠΎΠ»Π° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡβ), Π½ΠΎ ΡΠ°ΠΌ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π΅ ΡΠ΅ΡΠ½ΠΎ-Π±ΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ° ΡΠΎΠ²Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°ΠΌ ΠΌΠΎΡΡΠ° ΡΡΠ°ΡΠΈΡ. Π£Π²Π΅ΡΠ΅Π½ ΡΡΠΌ, ΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΠ΅ Ρ Π²Π΅ΡΡΠΈΡΡΠ° Π·Π° AutoCAD. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΡ, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ ΡΡΠΊ, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ ΡΠ²ΠΎΠΈΡΠ΅ βΠΊΠ»ΠΈΠ΅Π½ΡΠΈβ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
