
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° 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β¦Β»

ΠΠΊΠΎ Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ²Π°ΡΠ΅, Π·Π°ΡΠΎΡΠΎ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Π»ΠΈΠΏΡΠ²Π° Π²Π°ΠΆΠ½Π°ΡΠ° ΠΎΠΏΡΠΈΡ Β«ΠΠΎΠΏΠΈΡΠ°Π½Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎΒ», ΠΊΠΎΡΡΠΎ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ false, Π½Π΅ ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ²Π°ΠΉΡΠ΅ β ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .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. ΠΡΠ²Π°ΡΡΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ:
- ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΡΠ° βΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅β ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΡΡΡΠΈΠΊΡa ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ° _2015 (ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ½ΠΎ Π·Π°ΡΠΎ)
- ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΡΠ° βΠ‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅β ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π° ΡΡΠ»ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ R2015 ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Visual Studio ΠΈΠΌΠ° Π±ΡΠ³ β ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΡΡΠ»ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ. ΠΠΊΠΎ ΠΏΡΠΈ Π²Π°Ρ ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π° ΡΠΎΠ·ΠΈ Π±ΡΠ³, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ ΠΈΠ·ΡΡΠΈΠ΅ΡΠ΅ ΡΡΡΠ½ΠΎ ΠΎΡ ΡΠ°ΠΉΠ»Π° .csproj. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ Π½Π΅Π³ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ΠΌ.
ΠΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ ΡΡΡΠΈΠΊΡΠ° _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Ρ Ρ . ΠΠ°ΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΌΠ΅ ΡΡΡΠΈΠΊΡa ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ°
ΠΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π΅, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. Π ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ° ΡΡΠ»ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ»Π° .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;
// ΠΠΊΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΏΠ»ΡΠ³ΠΈΠ½) ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ, ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΏΠ»ΡΠ³ΠΈΠ½) ΡΡΠΊ
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
