ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° CAD ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ»ΡΠ³ΠΈΠ½ ΠΈΠ»ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°ΠΌΠΎΡΠΊ Π² ΡΠΎΠ·ΠΈ Π±ΠΈΠ·Π½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ° Π² Π½Π΅Π³ΠΎ ΠΈ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π°. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π΅ΠΊΡΠ° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΡΡΠ΄.
Π‘ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠΈΡ ΠΈ Π·Π½Π°Π½ΠΈΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ. ΠΠΈΠ½Π°Ρ ΠΏΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΡ ΠΈ ΠΈΡΠΊΠ°ΠΌ Π΄Π° Π²ΠΈ ΠΊΠ°ΠΆΠ° Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠΈΠ³Π½Π°Ρ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ ΠΈ ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΎΡ Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅
ΠΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠΎΡΡΠΎ, ΡΡΠ½ΠΎ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΎ, ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ.
ΠΠ° ΠΎΡΠ²ΠΎΡΠΈΠΌ Visual Studio (ΠΈΠΌΠ°ΠΌ Π²Π΅ΡΡΠΈΡΡΠ° Community 2019. Π Π΄Π° - Π½Π° ΡΡΡΠΊΠΈ) ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½ΠΎΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΠΊΠ° Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΠΌ MySuperPluginForRevit
Π©Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° Revit Π·Π° Π²Π΅ΡΡΠΈΠΈ 2015-2020. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°ΠΌ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ (Net Framework Class Library) ΠΈ ΡΠ΅ Π³ΠΎ Π½Π°ΡΠ΅ΠΊΠ° MySuperPluginForRevit_2015
Π’ΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΊΡΠΌ API Π½Π° Revit. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ SDK ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Revit), Π½ΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΈ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° NuGet. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π΄ΠΎΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π½ΠΎ Π°Π· ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΡΠ²ΠΎΡ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Ρ Π΄Π΅ΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π²ΡΡΡ Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° "ΠΠΎΠ·ΠΎΠ²Π°Π²Π°Π½Π΅ΡΠΎ'ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΡ ΠΌΠ΅Π½ΡΡΠΎ'ΠΡΠ΅ΠΌΠ΅ΡΡΠ΅ΡΠ΅ packages.config Π² PackageReference...Β»
ΠΠΊΠΎ ΠΈΠ·Π²Π΅Π΄Π½ΡΠΆ Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠ²Π° ΠΌΡΡΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° Π²Π°ΠΆΠ΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° "ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎβ, Π½Π° ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΠ°Π»ΡΠΈΠ², ΡΠΎΠ³Π°Π²Π° Π½Π΅ ΡΠ΅ ΠΏΠ°Π½ΠΈΠΊΡΠΎΡΠ²Π°ΠΉΡΠ΅ - ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .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.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.
Π, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠΌΠ΅ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π²Π΅Π΄Π½Π°Π³Π° ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π° "App"ΠΈ Π² ΠΏΠΎΠ»Π΅ΡΠΎ"ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅Β»ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΡΡΠΈΠΊΡΠ° _2015ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π΄Π° Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ³Π»ΠΎΠ±ΠΊΠ°ΡΠ°:
Π ΠΌΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ ΠΊΡΠΌ Π΅Π΄Π½Π° ΠΏΠ°ΠΏΠΊΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΌΠΎΠΈΡΠ΅ Π°ΡΠ΅ΠΌΠ±Π»ΠΈΡΠ°Π½ΠΈΡ ΠΎΡΡΠ°Π²Π°Ρ ΡΡΡ ΡΡΡΠΈΠΊΡΠ° Π½Π° ΡΠΎΡΠΌΡΠ»ΡΡΠ° _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 ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΎΡ Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ.
Π€Π°ΠΉΠ» Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΊΠΎΠ΄ - Class1.cs - Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΌΡΠΊΠ½Π΅ΠΌ Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ Π½Π΅Π³ΠΎ Π² Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠΌΠ° Π΄Π²Π° Π½Π°ΡΠΈΠ½Π° Π·Π° Π²ΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ:
- ΠΡΠ»Π³ΠΈ - ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Π΄Π΅ΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π½Π° ΠΌΠΈΡΠΊΠ°ΡΠ°, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° "ΠΠΎΠ±Π°Π²ΠΈΒ»->Β«Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π΅Π»Π΅ΠΌΠ΅Π½Ρ", Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΠ²Π°ΡΡ, Π½Π°ΠΌΠ΅ΡΠ΅ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΡΠΈΡΡΠ°"ΠΠΎΠ±Π°Π²ΠΈΒ» ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΡ Β«ΠΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΊΠ°ΡΠΎ Π²ΡΡΠ·ΠΊΠ°Β»
- ΠΡΠ°ΡΠΊΠΎ - Π½Π°ΠΏΡΠ°Π²ΠΎ Π² ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ°ΠΉΠ» (ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ»ΠΈ Π΄ΠΎΡΠΈ ΡΠ΅Π»ΠΈ ΠΏΠ°ΠΏΠΊΠΈ) ΠΈ Π³ΠΎ ΠΏΠ»ΡΠ·Π½Π΅ΡΠ΅ Π² Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠ°ΡΠΎ Π΄ΡΡΠΆΠΈΡΠ΅ Π½Π°ΡΠΈΡΠ½Π°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° Alt. ΠΡΠΈ ΠΏΠ»ΡΠ·Π³Π°Π½Π΅ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° Alt, ΠΊΡΡΡΠΎΡΡΡ Π½Π° ΠΌΠΈΡΠΊΠ°ΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ Π·Π½Π°ΠΊ ΠΏΠ»ΡΡ Π½Π° ΡΡΡΠ΅Π»ΠΊΠ°.
UPS: ΠΠ°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ°Π»ΠΊΠΎ ΠΎΠ±ΡΡΠΊΠ²Π°Π½Π΅ Π² ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ - Π·Π° Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠ»Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΅Π³Π½Π΅ΡΠ΅ Shift + Alt!
Π‘Π»Π΅Π΄ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΉΠ» Π²ΡΠ² Π²ΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Class1.cs ΡΡΡ ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΈΠΊΠΎΠ½Π° (ΡΠΈΠ½Ρ ΡΡΡΠ΅Π»ΠΊΠ°):
ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΊΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΊΠΎΠ΄ΡΡ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ:
ΠΠΎ ΡΠ°Π·ΠΈ ΡΡ Π΅ΠΌΠ° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ (2017-2020 Π³.). Life hack - Π°ΠΊΠΎ ΠΏΠ»ΡΠ·Π³Π°ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΠ°Π·ΡΠ²ΠΎΡΠ° Explorer Π½Π΅ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° Π²ΠΌΡΠΊΠ½Π°ΡΠΈ ΠΊΠ°ΡΠΎ Π²ΡΡΠ·ΠΊΠ°, ΡΠΎΠ³Π°Π²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄ΡΡΠΆΠΈΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° Alt!
ΠΠΏΠΈΡΠ°Π½Π°ΡΠ° ΠΎΠΏΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ° Π΄ΠΎΠ±ΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π° ΠΈΠ»ΠΈ Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π½ΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° - Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΠ°ΡΠ½ΠΎ. Π Π½Π°ΡΠΊΠΎΡΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΠ°Π·Π±ΡΠ°Ρ ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠ΄ΡΠ΅Π΄Ρ Π²ΡΠΈΡΠΊΠΎ Ρ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΊΡΠΌ Π²ΡΠΎΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½Π° ΠΌΠ°Π³ΠΈΡ
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΠΊ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΡΠ·ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅: βΠΠ°ΠΊΠ²ΠΎ, ΠΏΠΎ Π΄ΡΠ²ΠΎΠ»ΠΈΡΠ΅, ΠΎΠΏΠΈΡΠ°Ρ ΡΠ΅ ΠΏΡΡΠ²ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, Π°ΠΊΠΎ ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π·Π° Π²ΡΠΎΡΠΈΡ?!β. Π ΠΎΠΏΠΈΡΠ°Ρ Π²ΡΠΈΡΠΊΠΎ, Π·Π° Π΄Π° ΡΡΠ°Π½Π΅ ΠΏΠΎ-ΡΡΠ½ΠΎ Π·Π°ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅ΡΡΠ° Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ. Π ΡΠ΅Π³Π° Π½ΠΈ ΡΡΠ°Π²Π° ΠΏΠΎ-ΡΡΠ½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅, ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ.
Π Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎ-ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΡΠΌΠ° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΡΠΈΡ Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΏΡΡΠ²ΠΈΡ Π½Π°ΡΠΈΠ½.
Π’Π°ΠΊΠ° ΡΠ΅, ΠΏΡΡΠ²ΠΎ, ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ (ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅). Π’Π΅Π·ΠΈ. ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π·Π° Π²Π΅ΡΡΠΈΠΈ 2016-2020. ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΈΠ·ΡΡΠΈΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ°ΠΌ.
ΠΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡΡΠ°Π½Π°Π» ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ - MySuperPluginForRevit_2015. ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ:
- Π ΡΠ°Π·Π΄Π΅Π»Π° βAppΒ» ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΊΠ°ΡΠ° ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ° _2015 (ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ½ΠΎ Π·Π°ΡΠΎ)
- Π ΡΠ°Π·Π΄Π΅Π»Π° βΠΌΠΎΠ½ΡΠ°ΠΆΒ»ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π·Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ R2015 ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Visual Studio - ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π·Π° ΡΡΠ»ΠΎΠ²Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΡΡΠ½ΠΎ ΠΎΡ .csproj ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅ ΠΎΡΠ΅ ΠΎΠ±Π°ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ Π² Π½Π΅Π³ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅.
ΠΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° Solution Explorer, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΡΡΠΈΠΊΡΠ° _2015 ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΠ΅Π΄ ΠΈ ΡΡΠ²ΡΡΠ²Π° Π½Π° ΠΏΠ΅ΡΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠΈ! ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΠΈ Π·Π°ΡΠ΅Π΄Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° Π‘ΠΠ© ΠΡΠ²ΠΎΠ±ΠΎΠ΄Π΅ΡΠ΅ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½ΡΠΌΠ° Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, Π·Π°ΡΠΎΠ²Π° Π³ΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅. Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠΈΡΠΎ Π²Π΅ΡΠ΅ ΡΠ° Π½ΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΈ R2015, R2016, ..., R2020. ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ:
ΠΡΠΈΠ²Π°ΠΌΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΎΡΠ²Π°ΡΡΠΌΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .csproj Π² ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° Π²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° Π³ΠΎ ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ Π² Visual Studio - ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·ΡΠΎΠ²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠΎΠ³Π°Π²Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ Π±ΡΠ΄Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΡΠΎ ΠΌΠ΅Π½Ρ:
Π Π΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π²ΡΠ² Visual Studio Π΅ Π΄ΠΎΡΠΈ Π·Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡΡ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π° ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π²Π°.
ΠΡΠ² ΡΠ°ΠΉΠ»Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅
ΠΡΠΈΠ΄Π΅ΡΠ΅ Π΄ΠΎ ΠΎΠ±ΡΠΈΡ (ΠΏΡΡΠ²ΠΈ) Π΅Π»Π΅ΠΌΠ΅Π½Ρ 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 ΠΏΠ°ΠΊΠ΅ΡΠΈ). ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅
ΠΠ° ΠΏΠΎΠΌΠΎΡ Π½ΠΈ ΠΈΠ΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΠ·Π±Π΅ΡΠ΅ΡΠ΅, Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ 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 ΠΏΠ°ΠΊΠ΅ΡΠΈβ ΠΈ Π²ΠΈΠΆΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
Π Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ ΡΡΠΈΠ³Π½Π°Ρ Π΄ΠΎ Π·Π°Π΄ΡΠ½Π΅Π½Π° ΡΠ»ΠΈΡΠ° - Π·Π° Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΡΠΈΠ΄Π½ΠΈΡ ΠΌΠΎΠ½ΡΠ°ΠΆ (ΠΌΠ΅Π½Ρ "ΠΌΠΎΠ½ΡΠ°ΠΆΒ»->Β«ΠΠ°ΡΡΠΈΠ΄Π΅Π½ ΠΌΠΎΠ½ΡΠ°ΠΆβ), Π½ΠΎ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π½Π΅ ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ. Π ΠΏΡΠΈ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΠ²Π° ΡΡΡΠΎ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π½Π° ΡΠ΅ΠΎΡΠΈΡ ΡΡΡΠ±Π²Π°. ΠΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°. Π Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΡΡΠΎ Π΅ Π³ΡΠ΅ΡΠΊΠ° Π½Π° Visual Studio.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° ΠΏΠ°ΡΡΠΈΠ΄Π΅Π½ ΠΌΠΎΠ½ΡΠ°ΠΆ Π±Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠΎΠ½ΡΠ°ΠΆ
Π ΡΠ°ΠΊΠ°, ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°), Π·Π°Π΄ΡΡΠΆΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° ΠΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Ρ Π΄Π΅ΡΠ½ΠΈΡ Π±ΡΡΠΎΠ½ Π²ΡΡΡ Ρ ΠΏΡΠ°Π·Π½ΠΎ ΠΌΡΡΡΠΎ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° - Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΡΠΎ ΠΌΠ΅Π½Ρ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° "ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° PowerShell ΡΡΠΊ".
ΠΠΊΠΎ Π½Π΅ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ Π±ΠΎΠΌΠ±Π°ΡΠ°, ΡΠΎΠ³Π°Π²Π° ΠΏΡΡΠ²ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
dotnet tool install Nuke.GlobalTool βglobal
Π‘Π΅Π³Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΠΎΠΌΠ±Π°ΡΠ° ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°Π½Π΅Π½ΠΈ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π±ΠΎΠΌΠ±Π°ΡΠ° Π·Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ΅ Π·Π½Π°ΠΌ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΠΈΡΠ° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π° ΡΡΡΠΊΠΈ - Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π½Π°ΠΌΠ΅ΡΡ .nuke ΡΠ°ΠΉΠ». ΠΡΠΊΠ°ΡΠ΅ Π»ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ? [Π΄Π°/Π½Π΅]
ΠΠ°ΡΠΈΡΠ½Π΅ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ° Y ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° ΠΎΠΏΡΠΈΡ MSBuild, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΠΌΠ΅ ΠΊΠ°ΠΊΡΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ°:
ΠΠ΅ΠΊΠ° ΠΎΡΠΈΠ΄Π΅ΠΌ Π² Visual Studio, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Π½ΠΈ Π΄Π° ΠΏΡΠ΅Π·Π°ΡΠ΅Π΄ΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΡΠΌ Π½Π΅Π³ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ΅Π·Π°ΡΠ΅Π΄Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π²ΠΈΠΆΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΎΡ Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» - 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<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