ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ื‘ืขืช ืคื™ืชื•ื— ืชื•ืกืคื™ื ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ CAD (ื‘ืžืงืจื” ืฉืœื™ ืืœื” ื”ื AutoCAD, Revit ื•-Renga) ืขื ื”ื–ืžืŸ, ืžื•ืคื™ืขื” ื‘ืขื™ื” ืื—ืช - ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ืชื•ื›ื ื™ื•ืช ืžืฉื•ื—ืจืจื•ืช, ื™ืฉ ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘-API ืฉืœื”ืŸ ื•ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ืชื•ืกืคื™ื.

ื›ืืฉืจ ื™ืฉ ืœืš ืจืง ืชื•ืกืฃ ืื—ื“ ืื• ืฉืืชื” ืขื“ื™ื™ืŸ ืื•ื˜ื•ื“ื™ื“ืงื˜ ืžืชื—ื™ืœ ื‘ืขื ื™ื™ืŸ ื”ื–ื”, ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื™ืฆื•ืจ ืขื•ืชืง ืฉืœ ื”ืคืจื•ื™ื™ืงื˜, ืœืฉื ื•ืช ืืช ื”ืžืงื•ืžื•ืช ื”ื“ืจื•ืฉื™ื ื‘ื• ื•ืœื”ืจื›ื™ื‘ ื’ืจืกื” ื—ื“ืฉื” ืฉืœ ื”ืชื•ืกืฃ. ื‘ื”ืชืื ืœื›ืš, ืฉื™ื ื•ื™ื™ื ื”ื‘ืื™ื ื‘ืงื•ื“ ื™ื’ืจืจื• ืขืœื™ื™ื” ืžืจื•ื‘ื” ื‘ืขืœื•ื™ื•ืช ื”ืขื‘ื•ื“ื”.

ื›ื›ืœ ืฉืชืฆื‘ื•ืจ ื ื™ืกื™ื•ืŸ ื•ื™ื“ืข, ืชืžืฆื ืžืกืคืจ ื“ืจื›ื™ื ืœื”ืคื•ืš ืืช ื”ืชื”ืœื™ืš ื”ื–ื” ืœืื•ื˜ื•ืžื˜ื™. ื”ืœื›ืชื™ ื‘ื ืชื™ื‘ ื”ื–ื” ื•ืื ื™ ืจื•ืฆื” ืœืกืคืจ ืœื›ื ื‘ืžื” ื”ื’ืขืชื™ ื•ื›ืžื” ื–ื” ื ื•ื—.

ืจืืฉื™ืช, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืฉื™ื˜ื” ื‘ืจื•ืจื” ื•ืฉืื ื™ ื”ืฉืชืžืฉืชื™ ื‘ื” ื›ื‘ืจ ื”ืจื‘ื” ื–ืžืŸ.

ืงื™ืฉื•ืจื™ื ืœืงื‘ืฆื™ ืคืจื•ื™ืงื˜

ื•ื›ื“ื™ ืฉื”ื›ืœ ื™ื”ื™ื” ืคืฉื•ื˜, ื•ื™ื–ื•ืืœื™ ื•ืžื•ื‘ืŸ, ืืชืืจ ื”ื›ืœ ื‘ืืžืฆืขื•ืช ื“ื•ื’ืžื” ืžื•ืคืฉื˜ืช ืฉืœ ืคื™ืชื•ื— ืชื•ืกืคื™ื.

ื‘ื•ืื• ื ืคืชื— ืืช Visual Studio (ื™ืฉ ืœื™ ืืช ื’ืจืกืช ื”ืงื”ื™ืœื” 2019. ื•ื›ืŸ - ื‘ืจื•ืกื™ืช) ื•ื ื™ืฆื•ืจ ืคืชืจื•ืŸ ื—ื“ืฉ. ื‘ื•ืื• ื ืชืงืฉืจ ืืœื™ื• MySuperPluginForRevit

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืื ื• ื ื™ืฆื•ืจ ืชื•ืกืฃ ืขื‘ื•ืจ Revit ืขื‘ื•ืจ ื’ืจืกืื•ืช 2015-2020. ืœื›ืŸ, ื‘ื•ืื• ื ื™ืฆื•ืจ ืคืจื•ื™ืงื˜ ื—ื“ืฉ ื‘ืคืชืจื•ืŸ (Net Framework Class Library) ื•ื ืงืจื ืœื• MySuperPluginForRevit_2015

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื•ืกื™ืฃ ืงื™ืฉื•ืจื™ื ืœ-Revit API. ื›ืžื•ื‘ืŸ ืฉื ื•ื›ืœ ืœื”ื•ืกื™ืฃ ืงื™ืฉื•ืจื™ื ืœืงื‘ืฆื™ื ืžืงื•ืžื™ื™ื (ื ืฆื˜ืจืš ืœื”ืชืงื™ืŸ ืืช ื›ืœ ื”-SDKs ื”ื ื—ื•ืฆื™ื ืื• ืืช ื›ืœ ื”ื’ืจืกืื•ืช ืฉืœ Revit), ืื‘ืœ ืžื™ื“ ื ืœืš ื‘ื“ืจืš ื”ื ื›ื•ื ื” ื•ื ื—ื‘ืจ ืืช ื—ื‘ื™ืœืช NuGet. ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ืœื ืžืขื˜ ื—ื‘ื™ืœื•ืช, ืื‘ืœ ืื ื™ ืืฉืชืžืฉ ื‘ืขืฆืžื™.

ืœืื—ืจ ื—ื™ื‘ื•ืจ ื”ื—ื‘ื™ืœื”, ืœื—ืฅ ืœื—ื™ืฆื” ื™ืžื ื™ืช ืขืœ ื”ืคืจื™ื˜ "ืชื–ื›ื•ืจ"ื•ื‘ื—ืจ ืืช ื”ืคืจื™ื˜"ื”ืขื‘ืจ packages.config ืืœ PackageReference...ยป

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืื ืคืชืื•ื ื‘ืฉืœื‘ ื–ื” ืืชื” ืžืชื—ื™ืœ ืœื”ื™ื›ื ืก ืœืคืื ื™ืงื”, ื›ื™ ื‘ื—ืœื•ืŸ ืžืืคื™ื™ื ื™ ื”ื—ื‘ื™ืœื” ืœื ื™ื”ื™ื” ืคืจื™ื˜ ื—ืฉื•ื‘ "ื”ืขืชืง ืžืงื•ืžื™", ืฉื‘ื”ื—ืœื˜ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื’ื“ื™ืจ ืืช ื”ืขืจืš ืฉืงืจ, ืื– ืืœ ืชื™ื‘ื”ืœ - ืขื‘ื•ืจ ืœืชื™ืงื™ื” ืขื ื”ืคืจื•ื™ืงื˜, ืคืชื— ืืช ื”ืงื•ื‘ืฅ ืขื ืกื™ื•ืžืช .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.

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืฉื™ื ืœื‘ ืฉื™ืฉ ืœื”ื•ืกื™ืฃ ืืช ื”ืกืžืœ ืขื‘ื•ืจ ืชืฆื•ืจื•ืช Debug ื•-Release.

ื•ื‘ื›ืŸ, ื‘ื–ืžืŸ ืฉืื ื—ื ื• ื‘ื—ืœื•ืŸ ื”ืžืืคื™ื™ื ื™ื, ืื ื—ื ื• ืžื™ื“ ืขื•ื‘ืจื™ื ืœืœืฉื•ื ื™ืช "ื™ื™ืฉื•ื"ื•ื‘ืฉื˜ื—"ืžืจื—ื‘ ืฉืžื•ืช ื‘ืจื™ืจืช ืžื—ื“ืœยป ืœื”ืกื™ืจ ืืช ื”ืกื™ื•ืžืช _2015ื›ืš ืฉืžืจื—ื‘ ื”ืฉืžื•ืช ืฉืœื ื• ื”ื•ื ืื•ื ื™ื‘ืจืกืœื™ ื•ื‘ืœืชื™ ืชืœื•ื™ ื‘ืฉื ื”ืžื›ืœื•ืœ:

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ื‘ืžืงืจื” ืฉืœื™, ื‘ืžื•ืฆืจ ื”ืกื•ืคื™, ืชื•ืกืคื™ื ืฉืœ ื›ืœ ื”ื’ืจืกืื•ืช ืžื•ื›ื ืกื™ื ืœืชื™ืงื™ื” ืื—ืช, ื›ืš ืฉืฉืžื•ืช ื”ื”ืจื›ื‘ื” ืฉืœื™ ื ืฉืืจื™ื ืขื ืกื™ื•ืžืช ื”ื˜ื•ืคืก _20ั…ั…. ืื‘ืœ ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืกื™ืจ ืืช ื”ืกื™ื•ืžืช ืžืฉื ื”ื”ืจื›ื‘ื” ืื ื”ืงื‘ืฆื™ื ืืžื•ืจื™ื ืœื”ื™ื•ืช ืžืžื•ืงืžื™ื ื‘ืชื™ืงื™ื•ืช ืฉื•ื ื•ืช.

ื‘ื•ื ื ืœืš ืœืงื•ื“ ื”ืงื•ื‘ืฅ Class1.cs ื•ืœื“ืžื•ืช ืฉื ืงื•ื“ ื›ืœืฉื”ื•, โ€‹โ€‹ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit:

namespace MySuperPluginForRevit
{
    using Autodesk.Revit.Attributes;
    using Autodesk.Revit.DB;
    using Autodesk.Revit.UI;

    [Regeneration(RegenerationOption.Manual)]
    [Transaction(TransactionMode.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
#if R2015
            TaskDialog.Show("ModPlus", "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 ืœืžื—ื•ืง ืžื”ืคืจื•ื™ืงื˜ ื”ื—ื“ืฉ.

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืงื•ื‘ืฅ ืขื ื”ืงื•ื“ ื”ื ื“ืจืฉ - Class1.cs - ื›ื‘ืจ ื™ืฉ ืœื ื• ืืช ื–ื” ื•ืื ื—ื ื• ืจืง ืฆืจื™ื›ื™ื ืœื”ื•ืกื™ืฃ ืงื™ืฉื•ืจ ืืœื™ื• ื‘ืคืจื•ื™ืงื˜ ื—ื“ืฉ. ื™ืฉื ืŸ ืฉืชื™ ื“ืจื›ื™ื ืœื”ื›ื ืกืช ืงื™ืฉื•ืจื™ื:

  1. ืืจื•ืš - ืœื—ืฅ ืœื—ื™ืฆื” ื™ืžื ื™ืช ืขืœ ื”ืคืจื•ื™ืงื˜ ื•ื‘ื—ืจ "ืœื”ื•ืกื™ืฃยป->ยซืืœืžื ื˜ ืงื™ื™ื", ื‘ื—ืœื•ืŸ ืฉื ืคืชื—, ืžืฆื ืืช ื”ืงื•ื‘ืฅ ื”ืจืฆื•ื™ ื•ื‘ืžืงื•ื ื”ืืคืฉืจื•ืช "ืœื”ื•ืกื™ืฃ"ื‘ื—ืจ ืืช ื”ืืคืฉืจื•ืช"ื”ื•ืกืฃ ื›ื—ื™ื‘ื•ืจยป

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

  1. ืงืฆืจ โ€“ ื™ืฉื™ืจื•ืช ื‘ืกื™ื™ืจ ื”ืคืชืจื•ื ื•ืช, ื‘ื—ืจ ืืช ื”ืงื•ื‘ืฅ ื”ืจืฆื•ื™ (ืื• ืืคื™ืœื• ืงื‘ืฆื™ื, ืื• ืืคื™ืœื• ืชื™ืงื™ื•ืช ืฉืœืžื•ืช) ื•ื’ืจื•ืจ ืื•ืชื• ืœืคืจื•ื™ืงื˜ ื—ื“ืฉ ืชื•ืš ืœื—ื™ืฆื” ืžืžื•ืฉื›ืช ืขืœ ืžืงืฉ Alt. ืชื•ืš ื›ื“ื™ ื’ืจื™ืจื”, ืชืจืื” ืฉื›ืืฉืจ ืชืœื—ืฅ ืขืœ ืžืงืฉ Alt, ืกืžืŸ ื”ืขื›ื‘ืจ ื™ืฉืชื ื” ืžืกื™ืžืŸ ืคืœื•ืก ืœื—ืฅ.
    UPD: ืขืฉื™ืชื™ ืงืฆืช ื‘ืœื‘ื•ืœ ื‘ืคืกืงื” ื–ื• - ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืžืกืคืจ ืงื‘ืฆื™ื ืขืœื™ืš ืœื”ื—ื–ื™ืง ืžืขืžื“ Shift + Alt!

ืœืื—ืจ ื‘ื™ืฆื•ืข ื”ื”ืœื™ืš, ื™ื”ื™ื” ืœื ื• ืชื™ืง ื‘ืคืจื•ื™ืงื˜ ื”ืฉื ื™ Class1.cs ืขื ื”ืกืžืœ ื”ืžืชืื™ื (ื—ืฅ ื›ื—ื•ืœ):

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ื‘ืขืช ืขืจื™ื›ืช ืงื•ื“ ื‘ื—ืœื•ืŸ ื”ืขื•ืจืš, ืชื•ื›ืœ ื’ื ืœื‘ื—ื•ืจ ื‘ืื™ื–ื” ื”ืงืฉืจ ืฉืœ ื”ืคืจื•ื™ืงื˜ ืœื”ืฆื™ื’ ืืช ื”ืงื•ื“, ืžื” ืฉื™ืืคืฉืจ ืœืš ืœืจืื•ืช ืืช ื”ืงื•ื“ ื ืขืจื•ืš ืชื—ืช ืกืžืœื™ ืงื•ืžืคื™ืœืฆื™ื” ืžื•ืชื ื™ื ืฉื•ื ื™ื:

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืื ื• ื™ื•ืฆืจื™ื ืืช ื›ืœ ื”ืคืจื•ื™ืงื˜ื™ื ื”ืื—ืจื™ื (2017-2020) ื‘ืืžืฆืขื•ืช ืชื•ื›ื ื™ืช ื–ื•. ืคืจื™ืฆืช ื—ื™ื™ื - ืื ืืชื” ื’ื•ืจืจ ืงื‘ืฆื™ื ื‘ืกื™ื™ืจ ื”ืคืชืจื•ื ื•ืช ืœื ืžื”ืคืจื•ื™ืงื˜ ื”ื‘ืกื™ืกื™, ืืœื ืžื”ืคืจื•ื™ืงื˜ ืฉื‘ื• ื”ื ื›ื‘ืจ ื”ื•ื›ื ืกื• ื›ืงื™ืฉื•ืจ, ืื– ืืชื” ืœื ืฆืจื™ืš ืœื”ื—ื–ื™ืง ืืช ืžืงืฉ Alt!

ื”ืืคืฉืจื•ืช ื”ืžืชื•ืืจืช ื“ื™ ื˜ื•ื‘ื” ืขื“ ืœืจื’ืข ื”ื•ืกืคืช ื’ืจืกื” ื—ื“ืฉื” ืฉืœ ื”ืชื•ืกืฃ ืื• ืขื“ ืœืจื’ืข ื”ื•ืกืคืช ืงื‘ืฆื™ื ื—ื“ืฉื™ื ืœืคืจื•ื™ืงื˜ - ื›ืœ ื–ื” ื”ื•ืคืš ืœื”ื™ื•ืช ืžื™ื™ื’ืข ืžืื•ื“. ื•ืœืื—ืจื•ื ื” ืคืชืื•ื ืคืชืื•ื ื”ื‘ื ืชื™ ืื™ืš ืœืกื“ืจ ืืช ื”ื›ืœ ื‘ืคืจื•ื™ืงื˜ ืื—ื“ ื•ืื ื—ื ื• ืขื•ื‘ืจื™ื ืœืฉื™ื˜ื” ื”ืฉื ื™ื™ื”

ื”ืงืกื ืฉืœ ืชืฆื•ืจื•ืช

ืœืื—ืจ ืฉืกื™ื™ืžืช ืœืงืจื•ื ื›ืืŸ, ืืชื” ืขืฉื•ื™ ืœืฆืขื•ืง, "ืžื“ื•ืข ืชื™ืืจืช ืืช ื”ืฉื™ื˜ื” ื”ืจืืฉื•ื ื”, ืื ื”ืžืืžืจ ื”ื•ื ืžื™ื“ ืขืœ ื”ืฉื ื™?!" ื•ืชืืจืชื™ ื”ื›ืœ ื›ื“ื™ ืœื”ื‘ื”ื™ืจ ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ืกืžืœื™ ืงื•ืžืคื™ืœืฆื™ื” ืžื•ืชื ื™ื ื•ื‘ืื™ืœื• ืžืงื•ืžื•ืช ืฉื•ื ื™ื ื”ืคืจื•ื™ืงื˜ื™ื ืฉืœื ื•. ื•ืขื›ืฉื™ื• ืžืชื‘ืจืจ ืœื ื• ื‘ื“ื™ื•ืง ืื™ืœื• ื”ื‘ื“ืœื™ื ื‘ืคืจื•ื™ืงื˜ื™ื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื™ื™ืฉื, ื•ื ืฉืืจ ืจืง ืคืจื•ื™ืงื˜ ืื—ื“.

ื•ื›ื“ื™ ืฉื”ื›ืœ ื™ื”ื™ื” ื‘ืจื•ืจ ื™ื•ืชืจ, ืœื ื ื™ืฆื•ืจ ืคืจื•ื™ืงื˜ ื—ื“ืฉ, ืืœื ื ืขืฉื” ืฉื™ื ื•ื™ื™ื ื‘ืคืจื•ื™ืงื˜ ื”ื ื•ื›ื—ื™ ืฉืœื ื• ืฉื ื•ืฆืจ ื‘ื“ืจืš ื”ืจืืฉื•ื ื”.

ืื–, ืงื•ื“ื ื›ืœ, ืื ื• ืžืกื™ืจื™ื ืืช ื›ืœ ื”ืคืจื•ื™ืงื˜ื™ื ืžื”ืคืชืจื•ืŸ ืžืœื‘ื“ ื”ืจืืฉื™ (ื”ืžื›ื™ืœ ืืช ื”ืงื‘ืฆื™ื ื™ืฉื™ืจื•ืช). ื”ึธื”ึตืŸ. ืคืจื•ื™ืงื˜ื™ื ืœื’ืจืกืื•ืช 2016-2020. ืคืชื— ืืช ื”ืชื™ืงื™ื” ืขื ื”ืคืชืจื•ืŸ ื•ืžื—ืง ืฉื ืืช ื”ืชื™ืงื™ื•ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ื™ื ื”ืœืœื•.

ื ื•ืชืจ ืœื ื• ืคืจื•ื™ืงื˜ ืื—ื“ ื‘ื”ื—ืœื˜ื” ืฉืœื ื• - MySuperPluginForRevit_2015. ืคืชื— ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœื• ื•:

  1. ื‘ื›ืจื˜ื™ืกื™ื™ื” "ื™ื™ืฉื•ื"ื”ืกืจ ืืช ื”ืกื™ื•ืžืช ืžืฉื ื”ืืกื™ืคื” _2015 (ื™ืชื‘ืจืจ ืœืžื” ื‘ื”ืžืฉืš)
  2. ื‘ื›ืจื˜ื™ืกื™ื™ื” "ื”ืขืฆืจืชยป ื”ืกืจ ืืช ืกืžืœ ื”ื”ื™ื“ื•ืจ ื”ืžื•ืชื ื” R2015 ืžื”ืฉื“ื” ื”ืžืชืื™ื

ื”ืขืจื”: ื‘ื’ืจืกื” ื”ืื—ืจื•ื ื” ืฉืœ Visual Studio ื™ืฉ ื‘ืื’ - ืกืžืœื™ ืงื•ืžืคื™ืœืฆื™ื” ืžื•ืชื ื™ื ืื™ื ื ืžื•ืฆื’ื™ื ื‘ื—ืœื•ืŸ ืžืืคื™ื™ื ื™ ื”ืคืจื•ื™ืงื˜, ืœืžืจื•ืช ืฉื”ื ื–ืžื™ื ื™ื. ืื ืืชื” ื—ื•ื•ื” ืชืงืœื” ื–ื•, ืขืœื™ืš ืœื”ืกื™ืจ ืื•ืชื ื‘ืื•ืคืŸ ื™ื“ื ื™ ืžืงื•ื‘ืฅ ื”-.csproj. ืขื ื–ืืช, ืื ื—ื ื• ืขื“ื™ื™ืŸ ืฆืจื™ื›ื™ื ืœืขื‘ื•ื“ ื‘ื•, ืื– ื”ืžืฉืš ืœืงืจื•ื.

ืฉื ื” ืืช ืฉื ื”ืคืจื•ื™ืงื˜ ื‘ื—ืœื•ืŸ ืกื™ื™ืจ ื”ืคืชืจื•ื ื•ืช ืขืœ ื™ื“ื™ ื”ืกืจืช ื”ืกื™ื•ืžืช _2015 ื•ืœืื—ืจ ืžื›ืŸ ื”ืกืจ ืืช ื”ืคืจื•ื™ืงื˜ ืžื”ืคืชืจื•ืŸ. ื–ื” ื”ื›ืจื—ื™ ื›ื“ื™ ืœืฉืžื•ืจ ืขืœ ืกื“ืจ ื•ืจื’ืฉื•ืช ืฉืœ ืคืจืคืงืฆื™ื•ื ื™ืกื˜ื™ื! ืคืชื— ืืช ื”ืชื™ืงื™ื” ืฉืœ ื”ืคืชืจื•ืŸ ืฉืœื ื•, ืฉื ื” ืืช ืฉื ืชื™ืงื™ื™ืช ื”ืคืจื•ื™ืงื˜ ืฉื ื‘ืื•ืชื• ืื•ืคืŸ ื•ื˜ืขืŸ ืืช ื”ืคืจื•ื™ืงื˜ ื‘ื—ื–ืจื” ืœืคืชืจื•ืŸ.

ืคืชื— ืืช ืžื ื”ืœ ื”ืชืฆื•ืจื”. ืชืฆื•ืจื” ื‘ืืจื”"ื‘ ืœืฉื—ืจืจ ื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ืœื ื™ื”ื™ื” ืฆื•ืจืš ื‘ื•, ืื– ืื ื• ืžื•ื—ืงื™ื ืื•ืชื•. ืื ื• ื™ื•ืฆืจื™ื ืชืฆื•ืจื•ืช ื—ื“ืฉื•ืช ืขื ืฉืžื•ืช ืฉื›ื‘ืจ ืžื•ื›ืจื™ื ืœื ื• R2015, R2016, ..., R2020. ืฉื™ื ืœื‘ ืฉืื™ื ืš ืฆืจื™ืš ืœื”ืขืชื™ืง ื”ื’ื“ืจื•ืช ืžืชืฆื•ืจื•ืช ืื—ืจื•ืช ื•ืื™ืŸ ืฆื•ืจืš ืœื™ืฆื•ืจ ืชืฆื•ืจื•ืช ืคืจื•ื™ืงื˜:

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ื›ื ืกื• ืœืชื™ืงื™ื” ืขื ื”ืคืจื•ื™ื™ืงื˜ ื•ืคืชื—ื• ืืช ื”ืงื•ื‘ืฅ ืขื ืกื™ื•ืžืช .csproj ื‘ืขื•ืจืš ืฉื ื•ื— ืœื›ื. ืื’ื‘, ืืชื” ื™ื›ื•ืœ ืœืคืชื•ื— ืื•ืชื• ื’ื ื‘-Visual Studio - ืืชื” ืฆืจื™ืš ืœืคืจื•ืง ืืช ื”ืคืจื•ื™ืงื˜ ื•ืื– ื”ืคืจื™ื˜ ื”ืจืฆื•ื™ ื™ื”ื™ื” ื‘ืชืคืจื™ื˜ ื”ื”ืงืฉืจ:

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืขืจื™ื›ื” ื‘-Visual Studio ืืคื™ืœื• ืขื“ื™ืคื”, ืžื›ื™ื•ื•ืŸ ืฉื”ืขื•ืจืš ื’ื ืžื™ื™ืฉืจ ื•ื’ื ืžื‘ืงืฉ.

ื‘ืงื•ื‘ืฅ ื ืจืื” ืืช ื”ืืœืžื ื˜ื™ื ืงื‘ื•ืฆืช ื ื›ืกื™ื - ื‘ื—ืœืง ื”ืขืœื™ื•ืŸ ื”ื•ื ื”ื›ืœืœื™, ื•ืื– ื‘ืื™ื ื”ืชื ืื™ื. ืืœืžื ื˜ื™ื ืืœื” ืงื•ื‘ืขื™ื ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœ ื”ืคืจื•ื™ืงื˜ ื›ืืฉืจ ื”ื•ื ื ื‘ื ื”. ื”ืืœืžื ื˜ ื”ืจืืฉื•ืŸ, ืฉื”ื•ื ืœืœื ืชื ืื™ื, ืงื•ื‘ืข ืžืืคื™ื™ื ื™ื ื›ืœืœื™ื™ื, ื•ืืœืžื ื˜ื™ื ืขื ืชื ืื™ื, ื‘ื”ืชืื, ืžืฉื ื™ื ื›ืžื” ืžืืคื™ื™ื ื™ื ื‘ื”ืชืื ืœืชืฆื•ืจื•ืช.

ืขื‘ื•ืจ ืืœ ื”ืืœืžื ื˜ ื”ืžืฉื•ืชืฃ (ื”ืจืืฉื•ืŸ). ืงื‘ื•ืฆืช ื ื›ืกื™ื ื•ืœื”ืกืชื›ืœ ืขืœ ื”ื ื›ืก ื”ืจื›ื‘ื” ืฉื โ€“ ื–ื”ื• ืฉื ื”ืืกื™ืคื” ื•ืฆืจื™ืš ืœืงื‘ืœ ืื•ืชื” ืœืœื ืกื™ื•ืžืช _2015. ืื ื™ืฉ ืกื™ื•ืžืช, ืื– ื”ืกืจ ืื•ืชื”.

ืžืฆื™ืืช ืืœืžื ื˜ ืขื ืชื ืื™

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

ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืืช ื–ื” - ืื ื—ื ื• ืžื•ื—ืงื™ื ืืช ื–ื”.

ืืœืžื ื˜ ืขื ืžืฆื‘

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

ื™ื”ื™ื” ืฆื•ืจืš ืœืขื‘ื•ื“ ื‘ืฉืœื‘ ืฉืœ ืคื™ืชื•ื— ืงื•ื“ ื•ืื™ืชื•ืจ ื‘ืื’ื™ื. ืืชื” ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœื• ื›ื“ื™ ืœื”ืชืื™ื ืœืฆืจื›ื™ื ืฉืœืš - ืœื”ื’ื“ื™ืจ ื ืชื™ื‘ื™ ืคืœื˜ ืฉื•ื ื™ื, ืœืฉื ื•ืช ืกืžืœื™ ืงื•ืžืคื™ืœืฆื™ื” ืžื•ืชื ื™ื ื•ื›ื•'.

ืขื›ืฉื™ื• ื‘ื•ืื• ื ื™ืฆื•ืจ ืืœืžื ื˜ื™ื ื—ื“ืฉื™ื ืงื‘ื•ืฆืช ื ื›ืกื™ื ืขื‘ื•ืจ ื”ืชืฆื•ืจื•ืช ืฉืœื ื•. ื‘ืืœืžื ื˜ื™ื ื”ืืœื” ืื ื—ื ื• ืจืง ืฆืจื™ื›ื™ื ืœื”ื’ื“ื™ืจ ืืจื‘ืขื” ืžืืคื™ื™ื ื™ื:

  • OutputPath - ืชื™ืงื™ื™ืช ืคืœื˜. ื”ื’ื“ืจืชื™ ืืช ืขืจืš ื‘ืจื™ืจืช ื”ืžื—ื“ืœ binR20xx
  • ื”ื’ื“ืจ ืงื‘ื•ืขื™ื โ€“ ืกืžืœื™ ืงื•ืžืคื™ืœืฆื™ื” ืžื•ืชื ื™ื. ื™ืฉ ืœืฆื™ื™ืŸ ืืช ื”ืขืจืš TRACE;R20ั…ั…
  • TargetFrameworkVersion - ื’ืจืกืช ืคืœื˜ืคื•ืจืžื”. ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit API ื“ื•ืจืฉื•ืช ืœืฆื™ื™ืŸ ืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช.
  • ื”ืจื›ื‘ื” ืฉื - ืฉื ื”ืจื›ื‘ื” (ื›ืœื•ืžืจ ืฉื ื”ืงื•ื‘ืฅ). ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืืช ื”ืฉื ื”ืžื“ื•ื™ืง ืฉืœ ื”ืžื›ืœื•ืœ, ืื‘ืœ ื‘ืฉื‘ื™ืœ ื”ืจื‘ื’ื•ื ื™ื•ืช ืื ื™ ืžืžืœื™ืฅ ืœื›ืชื•ื‘ ืืช ื”ืขืจืš $(AssemblyName)_20ั…ั…. ืœืฉื ื›ืš, ื”ืกืจื ื• ื‘ืขื‘ืจ ืืช ื”ืกื™ื•ืžืช ืžืฉื ื”ืžื›ืœื•ืœ

ื”ืžืืคื™ื™ืŸ ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ืฉืœ ื›ืœ ื”ืืœืžื ื˜ื™ื ื”ืœืœื• ื”ื•ื ืฉื ื™ืชืŸ ืคืฉื•ื˜ ืœื”ืขืชื™ืง ืื•ืชื ืœืคืจื•ื™ืงื˜ื™ื ืื—ืจื™ื ืžื‘ืœื™ ืœืฉื ื•ืช ืื•ืชื ื›ืœืœ. ื‘ื”ืžืฉืš ื”ืžืืžืจ ืืฆืจืฃ ืืช ื›ืœ ื”ืชื•ื›ืŸ ืฉืœ ืงื•ื‘ืฅ ื”-.csproj.

ืื•ืงื™ื™, ื”ื‘ื ื• ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœ ื”ืคืจื•ื™ืงื˜ - ื–ื” ืœื ืงืฉื”. ืื‘ืœ ืžื” ืœืขืฉื•ืช ืขื ืกืคืจื™ื•ืช ืคืœืื’ื™ืŸ (ื—ื‘ื™ืœื•ืช NuGet). ืื ื ืกืชื›ืœ ืขื•ื“ ื™ื•ืชืจ, ื ืจืื” ืฉื”ืกืคืจื™ื•ืช ื”ื ื›ืœืœื•ืช ืžืฆื•ื™ื ื•ืช ื‘ืืœืžื ื˜ื™ื ืงื‘ื•ืฆืช ืคืจื™ื˜ื™ื. ืื‘ืœ ืžื–ืœ ืจืข - ืืœืžื ื˜ ื–ื” ืžืขื‘ื“ ื‘ืฆื•ืจื” ืœื ื ื›ื•ื ื” ืืช ื”ืชื ืื™ื ื›ืืœืžื ื˜ ืงื‘ื•ืฆืช ื ื›ืกื™ื. ืื•ืœื™ ื–ื• ืืคื™ืœื• ืชืงืœื” ืฉืœ Visual Studio, ืื‘ืœ ืื ืชืฆื™ื™ืŸ ื›ืžื” ืืœืžื ื˜ื™ื ืงื‘ื•ืฆืช ืคืจื™ื˜ื™ื ืขื ืชื ืื™ ืชืฆื•ืจื”, ื•ื”ื›ื ืก ืงื™ืฉื•ืจื™ื ืฉื•ื ื™ื ืœื—ื‘ื™ืœื•ืช 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>

ืฉื™ืžื• ืœื‘ ืฉื‘ืื—ื“ ื”ืชื ืื™ื ืฆื™ื™ื ืชื™ ืฉืชื™ ืชืฆื•ืจื•ืช ื‘ืืžืฆืขื•ืช ืื•ึน. ื‘ื“ืจืš ื–ื• ื”ื—ื‘ื™ืœื” ื”ื ื“ืจืฉืช ืชื—ื•ื‘ืจ ื‘ืžื”ืœืš ื”ื”ื’ื“ืจื” ืœื ืคื•ืช.

ื•ื›ืืŸ ื™ืฉ ืœื ื• ื›ืžืขื˜ ื”ื›ืœ ืžื•ืฉืœื. ืื ื• ื˜ื•ืขื ื™ื ืืช ื”ืคืจื•ื™ืงื˜ ื‘ื—ื–ืจื”, ืžืืคืฉืจื™ื ืืช ื”ืชืฆื•ืจื” ืฉืื ื• ืฆืจื™ื›ื™ื, ืงื•ืจืื™ื ืœืคืจื™ื˜ "ื‘ืชืคืจื™ื˜ ื”ื”ืงืฉืจ ืฉืœ ื”ืคืชืจื•ืŸ (ืœื ื”ืคืจื•ื™ืงื˜)ืฉื—ื–ืจ ืืช ื›ืœ ื—ื‘ื™ืœื•ืช NuGet"ื•ืื ื—ื ื• ืจื•ืื™ื ืื™ืš ื”ื—ื‘ื™ืœื•ืช ืฉืœื ื• ืžืฉืชื ื•ืช.

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ื•ื‘ืฉืœื‘ ื”ื–ื” ื”ื’ืขืชื™ ืœืžื‘ื•ื™ ืกืชื•ื - ื›ื“ื™ ืœืืกื•ืฃ ืืช ื›ืœ ื”ืชืฆื•ืจื•ืช ื‘ื‘ืช ืื—ืช, ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื”ืจื›ื‘ืช ืืฆื•ื•ื” (ืชืคืจื™ื˜ "ื”ืขืฆืจืชยป->ยซื‘ื ื™ื™ืช ืืฆื•ื•ื”"), ืืš ื‘ืขืช ื”ื—ืœืคืช ืชืฆื•ืจื•ืช, ื”ื—ื‘ื™ืœื•ืช ืื™ื ืŸ ืžืฉื•ื—ื–ืจื•ืช ืื•ื˜ื•ืžื˜ื™ืช. ื•ื›ืืฉืจ ืžืจื›ื™ื‘ื™ื ืืช ื”ืคืจื•ื™ืงื˜, ื–ื” ื’ื ืœื ืงื•ืจื”, ืื ื›ื™, ื‘ืชื™ืื•ืจื™ื”, ื–ื” ืฆืจื™ืš ืœื”ื™ื•ืช. ืœื ืžืฆืืชื™ ืคืชืจื•ืŸ ืœื‘ืขื™ื” ื”ื–ื• ื‘ืืžืฆืขื™ื ืกื˜ื ื“ืจื˜ื™ื™ื. ื•ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื–ื” ื’ื ื‘ืื’ ืฉืœ Visual Studio.

ืœื›ืŸ, ืขื‘ื•ืจ ื”ืจื›ื‘ื” ืืฆื•ื•ื”, ื”ื•ื—ืœื˜ ืœื”ืฉืชืžืฉ ื‘ืžืขืจื›ืช ื”ืจื›ื‘ื” ืื•ื˜ื•ืžื˜ื™ืช ืžื™ื•ื—ื“ืช Nuke. ืœืžืขืฉื” ืœื ืจืฆื™ืชื™ ืืช ื–ื” ื›ื™ ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ืžื•ื’ื–ื ืžื‘ื—ื™ื ืช ืคื™ืชื•ื— ืชื•ืกืคื™ื, ืื‘ืœ ื›ืจื’ืข ืื ื™ ืœื ืจื•ืื” ืฉื•ื ืคืชืจื•ืŸ ืื—ืจ. ื•ืœืฉืืœื” "ืœืžื” Nuke?" ื”ืชืฉื•ื‘ื” ืคืฉื•ื˜ื” - ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ื” ื‘ืขื‘ื•ื“ื”.

ืื–, ืขื‘ื•ืจ ืืœ ื”ืชื™ืงื™ื” ืฉืœ ื”ืคืชืจื•ืŸ ืฉืœื ื• (ืœื ื”ืคืจื•ื™ืงื˜), ื”ื—ื–ืง ืืช ื”ืžืงืฉ ืžืฉืžืจืช ื•ืœื—ืฅ ืœื—ื™ืฆื” ื™ืžื ื™ืช ืขืœ ืžืงื•ื ืจื™ืง ื‘ืชื™ืงื™ื™ื” - ื‘ืชืคืจื™ื˜ ื”ื”ืงืฉืจ ื‘ื—ืจ ืืช ื”ืคืจื™ื˜ "ืคืชื— ืืช ื—ืœื•ืŸ PowerShell ื›ืืŸ".

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืื ื–ื” ืœื ืžื•ืชืงืŸ ืืฆืœืš Nuke, ื•ืื– ืชื—ื™ืœื” ื›ืชื•ื‘ ืืช ื”ืคืงื•ื“ื”

dotnet tool install Nuke.GlobalTool โ€“global

ื›ืขืช ื›ืชื•ื‘ ืืช ื”ืคืงื•ื“ื” Nuke ื•ืชืชื‘ืงืฉ ืœื”ื’ื“ื™ืจ Nuke ืขื‘ื•ืจ ื”ืคืจื•ื™ืงื˜ ื”ื ื•ื›ื—ื™. ืื ื™ ืœื ื™ื•ื“ืข ืื™ืš ืœื›ืชื•ื‘ ืืช ื–ื” ื‘ืฆื•ืจื” ื™ื•ืชืจ ื ื›ื•ื ื” ื‘ืจื•ืกื™ืช - ื‘ืื ื’ืœื™ืช ื–ื” ื™ื™ื›ืชื‘ ืœื ื ื™ืชืŸ ืœืžืฆื•ื ืงื•ื‘ืฅ .nuke. ื”ืื ืืชื” ืจื•ืฆื” ืœื”ื’ื“ื™ืจ build? [ื™/ื ]

ื”ืงืฉ ืขืœ ืžืงืฉ Y ื•ืื– ื™ื”ื™ื• ืคืจื™ื˜ื™ ื”ื’ื“ืจื•ืช ื™ืฉื™ืจื•ืช. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืืช ื”ืืคืฉืจื•ืช ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ื‘ืืžืฆืขื•ืช MSBuild, ืื– ืื ื—ื ื• ืขื•ื ื™ื ื›ืžื• ื‘ืฆื™ืœื•ื ื”ืžืกืš:

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ื ืขื‘ื•ืจ ืœ-Visual Studio, ืฉื™ื ื—ื” ืื•ืชื ื• ืœื˜ืขื•ืŸ ืžื—ื“ืฉ ืืช ื”ืคืชืจื•ืŸ, ืžื›ื™ื•ื•ืŸ ืฉื”ืชื•ื•ืกืฃ ืœื• ืคืจื•ื™ืงื˜ ื—ื“ืฉ. ืื ื—ื ื• ื˜ื•ืขื ื™ื ืžื—ื“ืฉ ืืช ื”ืคืชืจื•ืŸ ื•ืจื•ืื™ื ืฉื™ืฉ ืœื ื• ืคืจื•ื™ืงื˜ ืœึดื‘ื ื•ึนืช ืฉื‘ื• ืื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ืงื•ื‘ืฅ ืื—ื“ ื‘ืœื‘ื“ - Build.cs

ืื ื• ืžื™ื™ืฆืจื™ื ืคืจื•ื™ืงื˜ ืชื•ืกืฃ ืื—ื“ ืขื ืงื•ืžืคื™ืœืฆื™ื” ืขื‘ื•ืจ ื’ืจืกืื•ืช ืฉื•ื ื•ืช ืฉืœ Revit/AutoCAD

ืคืชื— ืืช ื”ืงื•ื‘ืฅ ื”ื–ื” ื•ื›ืชื•ื‘ ืกืงืจื™ืคื˜ ืœื‘ื ื™ื™ืช ื”ืคืจื•ื™ืงื˜ ืขื‘ื•ืจ ื›ืœ ื”ืชืฆื•ืจื•ืช. ื•ื‘ื›ืŸ, ืื• ื”ืฉืชืžืฉ ื‘ืกืงืจื™ืคื˜ ืฉืœื™, ืื•ืชื• ืชื•ื›ืœ ืœืขืจื•ืš ื›ื“ื™ ืฉื™ืชืื™ื ืœืฆืจื›ื™ื ืฉืœืš:

using System.IO;
using Nuke.Common;
using Nuke.Common.Execution;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tools.MSBuild;
using static Nuke.Common.Tools.MSBuild.MSBuildTasks;

[CheckBuildProjectConfigurations]
[UnsetVisualStudioEnvironmentVariables]
class Build : NukeBuild
{
    public static int Main () => Execute<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 ืžืฆื™ื™ืŸ ืืช ื”ื ื“ืจืฉ ื™ืขื“. ืื‘ืœ ื™ืฉ ืœื ื• ืื—ื“ ื™ืขื“, ืฉืคื•ืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ). ืœืื—ืจ ืœื—ื™ืฆื” ืขืœ ืžืงืฉ Enter, ื ืจื’ื™ืฉ ื›ืžื• ื”ืืงืจื™ื ืืžื™ืชื™ื™ื, ืžื›ื™ื•ื•ืŸ ืฉื›ืžื• ื‘ืกืจื˜, ื”ืคืจื•ื™ืงื˜ ืฉืœื ื• ื™ื•ืจื›ื‘ ืื•ื˜ื•ืžื˜ื™ืช ืœืชืฆื•ืจื•ืช ืฉื•ื ื•ืช.

ืื’ื‘, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘-PowerShell ื™ืฉื™ืจื•ืช ืž-Visual Studio (ืชืคืจื™ื˜ "ืœืฆืคื•ืชยป->ยซื—ืœื•ื ื•ืช ืื—ืจื™ืยป->ยซืงื•ื ืกื•ืœืช ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช"), ืื‘ืœ ื”ื›ืœ ื™ื”ื™ื” ื‘ืฉื—ื•ืจ ืœื‘ืŸ, ื•ื–ื” ืœื ืžืื•ื“ ื ื•ื—.

ื–ื” ืžืกื™ื™ื ืืช ื”ืžืืžืจ ืฉืœื™. ืื ื™ ื‘ื˜ื•ื— ืฉืืชื” ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ ืืช ื”ืืคืฉืจื•ืช ืฉืœ AutoCAD ื‘ืขืฆืžืš. ืื ื™ ืžืงื•ื•ื” ืฉื”ื—ื•ืžืจ ื”ืžื•ืฆื’ ื›ืืŸ ื™ืžืฆื ืืช "ืœืงื•ื—ื•ืชื™ื•".

ืชื•ื“ื” ืœืš!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”