ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄Π»Ρ Π‘ΠΠΠ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (
ΠΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΈΠ»ΠΈ ΠΡ Π΅ΡΠ΅ Π½ΠΎΠ²ΠΈΡΠΎΠΊ-ΡΠ°ΠΌΠΎΡΡΠΊΠ° Π² ΡΡΠΎΠΌ Π΄Π΅Π»Π΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π² Π½Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½Π°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ ΠΏΠΎΠ²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΄ΠΎΠ·Π°ΡΡΠ°Ρ.
ΠΠΎ ΠΌΠ΅ΡΠ΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΠΎΠΏΡΡΠ° ΠΈ Π·Π½Π°Π½ΠΈΠΉ ΠΡ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π― ΠΏΡΠΎΡΠ΅Π» ΡΡΠΎΡ ΠΏΡΡΡ ΠΈ Ρ ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΠ°ΠΌ ΠΊ ΡΠ΅ΠΌΡ Ρ ΠΏΡΠΈΡΠ΅Π» Π² ΠΈΡΠΎΠ³Π΅ ΠΈ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΈ ΠΊΠΎΡΠΎΡΡΠΌ Ρ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎ, Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Ρ Π±ΡΠ΄Ρ Π²ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°.
ΠΡΠΊΡΠΎΠ΅ΠΌ Visual Studio (Ρ ΠΌΠ΅Π½Ρ Π²Π΅ΡΡΠΈΡ Community 2019. Π Π΄Π° β Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅) ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ MySuperPluginForRevit
ΠΡ Π±ΡΠ΄Π΅ΠΌ Π΄Π΅Π»Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΠΎΠ΄ Revit Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΉ 2015-2020. ΠΠΎΡΡΠΎΠΌΡ ΡΠΎΠ·Π΄Π°ΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ (ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠ»Π°ΡΡΠΎΠ² Net Framework) ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ MySuperPluginForRevit_2015
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° API Revit. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π±Π΅ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ SDK ΠΈΠ»ΠΈ Π²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Revit), Π½ΠΎ ΠΌΡ ΠΏΠΎΠΉΠ΄Π΅ΠΌ ΡΡΠ°Π·Ρ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ ΠΏΡΡΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ NuGet-ΠΏΠ°ΠΊΠ΅Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½Π΅ ΠΌΠ°Π»ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π½ΠΎ Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅.
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΆΠΌΠ΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΊΠΈ Π½Π° ΠΏΡΠ½ΠΊΡ Β«Π‘ΡΡΠ»ΠΊΠΈΒ» ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π² ΠΌΠ΅Π½Ρ ΠΏΡΠ½ΠΊΡ Β«ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ packages.config Π² PackageReferenceβ¦Β»
ΠΡΠ»ΠΈ Π²Π΄ΡΡΠ³ Π½Π° ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Ρ Π²Π°Ρ Π½Π°ΡΠ½Π΅ΡΡΡ ΠΏΠ°Π½ΠΈΠΊΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠΊΠ½Π΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠ½ΠΊΡΠ° Β«ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΒ», ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false, ΡΠΎ Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΠ°Π½ΠΈΠΊΠΎΠ²Π°ΡΡ β ΠΈΠ΄Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .csproj Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π²Π°ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Notepad++) ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ°ΠΌ Π·Π°ΠΏΠΈΡΡ ΠΎ Π½Π°ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ½Π° ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΊ:
<PackageReference Include="ModPlus.Revit.API.2015">
<Version>1.0.0</Version>
</PackageReference>
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅ΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ <ExcludeAssets>runtime</ExcludeAssets>. ΠΠΎΠ»ΡΡΠΈΡΡΡ Π²ΠΎΡ ΡΠ°ΠΊ:
<PackageReference Include="ModPlus.Revit.API.2015">
<Version>1.0.0</Version>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π²ΡΡ
ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ.
ΠΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅ β ΡΡΠ°Π·Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΏΠ»Π°Π³ΠΈΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΈΠ· 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", "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 ΠΊΡΡΡΠΎΡ Π½Π° ΠΌΡΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΠΏΠ»ΡΡΠΈΠΊΠ° Π½Π° ΡΡΡΠ΅Π»ΠΎΡΠΊΡ.
UPD: Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Ρ ΡΠΌΡΡΡ Π² ΡΡΠΎΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ β ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΆΠΈΠΌΠ°ΡΡ Shift+Alt!
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ°ΠΉΠ» Class1.cs Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ (ΡΠΈΠ½ΡΡ ΡΡΡΠ΅Π»ΠΎΡΠΊΠ°):
ΠΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² ΠΎΠΊΠ½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΊΠΎΠ΄, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
ΠΠΎ ΡΡΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ (2017-2020). ΠΠ°ΠΉΡΡ Π°ΠΊ β Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π² ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ ΡΠ²ΡΠ·Ρ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΆΠΈΠΌΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ Alt!
ΠΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΠΏΠΎΠ»Π½Π΅ Ρ ΠΎΡΠΎΡ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈΠ»ΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π½ΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² β Π²ΡΠ΅ ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΡΡΠΎΡΠ½ΡΠΌ. Π Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ Π²Π΄ΡΡΠ³ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΎΡΠΎΠ·Π½Π°Π» ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΠΎ ΡΠ°Π·ΡΡΠ»ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ
ΠΠ°Π³ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ
ΠΠΎΡΠΈΡΠ°Π² ΡΡΠ΄Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΡΡ Β«Π Π½Π°ΡΠΈΠ³ ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π» ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, Π΅ΡΠ»ΠΈ ΡΡΠ°ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΡΠΎ Π²ΡΠΎΡΠΎΠΉ?!Β». Π ΠΎΠΏΠΈΡΠ°Π» Ρ Π²ΡΠ΅, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΡΡΠ½Π΅Π΅ Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Ρ Π½Π°Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ. Π ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ½Π΅Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΠΎΡΡΠ°Π²ΠΈΠ² Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ.
Π ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π±ΡΠ»ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° Π²Π½Π΅ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½Π°Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΡΠ°ΠΊ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΈΠ· ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ (ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΉΠ»Ρ). Π’.Π΅. ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΉ 2016-2020. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΏΠ°ΠΏΠΊΠΈ ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
Π£ Π½Π°Ρ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΡΡΠ°Π»ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ β MySuperPluginForRevit_2015. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ:
- ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΡΠΈΠΊΡ _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Ρ Ρ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ°Π½Π΅Π΅ ΠΈ ΡΠ΄Π°Π»ΡΠ»ΠΈ ΡΡΡΡΠΈΠΊΡ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ
Π‘Π°ΠΌΠ°Ρ Π³Π»Π°Π²Π½Π°Ρ ΡΠΈΡΠΊΠ° Π²ΡΠ΅Ρ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π±Π°Π½Π°Π»ΡΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ. ΠΠ°Π»Π΅Π΅ Π² ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΡ Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° .csproj.
Π₯ΠΎΡΠΎΡΠΎ, ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ β ΡΡΠΎ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ (NuGet-ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ). ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄Π°Π»Π΅Π΅, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π°Π΄Π°ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
ΠΠ° ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Choose, Π·Π°Π΄Π°Π΅ΠΌ ΡΠ°Π·Π½ΡΠ΅ 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>
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ Ρ ΡΠΊΠ°Π·Π°Π» Π΄Π²Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΠΠ (Or). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π½ΡΠΆΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Debug.
Π Π²ΠΎΡ Ρ Π½Π°Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ. ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ, Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΡ Π½Π°ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ (Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°) ΠΏΡΠ½ΠΊΡ Β«ΠΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ NuGetΒ» ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ.
Π Π²ΠΎΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Ρ ΠΏΡΠΈΡΠ΅Π» Π² ΡΡΠΏΠΈΠΊ β ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠ°Π·Ρ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ (ΠΌΠ΅Π½Ρ Β«Π‘Π±ΠΎΡΠΊΠ°Β» -> Β«ΠΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°Β»), Π½ΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Ρ ΠΎΡΡ, ΠΏΠΎ ΠΈΠ΄Π΅Π΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ. Π Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Ρ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡΠ΅Π». Π ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ ΡΠΎΠΆΠ΅ Π±Π°Π³ Visual Studio.
ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ
ΠΡΠ°ΠΊ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ (Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°), Π·Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΡ 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<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 ΠΈ ΡΠ½ΠΎΠ²Π° ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nuke (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nuke Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Target. ΠΠΎ Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΠ½ Target, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ). ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Enter ΠΌΡ ΠΏΠΎΡΡΠ²ΡΡΠ²ΡΠ΅ΠΌ ΡΠ΅Π±Ρ Π½Π°ΡΡΠΎΡΡΠΈΠΌΠΈ Ρ Π°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π² ΠΊΠΈΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ±ΠΎΡΠΊΠ° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΡΠ°ΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PowerShell ΠΏΡΡΠΌ ΠΈΠ· Visual Studio (ΠΌΠ΅Π½Ρ Β«ΠΠΈΠ΄Β» -> Β«ΠΡΡΠ³ΠΈΠ΅ ΠΎΠΊΠ½Π°Β» -> Β«ΠΠΎΠ½ΡΠΎΠ»Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²Β»), Π½ΠΎ ΡΠ°ΠΌ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΡΠΌ, ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ° ΡΡΠΎΠΌ ΠΌΠΎΡ ΡΡΠ°ΡΡΡ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°. Π£Π²Π΅ΡΠ΅Π½, ΡΡΠΎ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π΄Π»Ρ AutoCAD Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠ°ΠΌΠΈ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π½Π°ΠΉΠ΄Π΅Ρ ΡΠ²ΠΎΠΈΡ Β«ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²Β».
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com