ืืขืช ืคืืชืื ืชืืกืคืื ืขืืืจ ืืืฉืืื CAD (
ืืืฉืจ ืืฉ ืื ืจืง ืชืืกืฃ ืืื ืื ืฉืืชื ืขืืืื ืืืืืืืืงื ืืชืืื ืืขื ืืื ืืื, ืืชื ืืืื ืคืฉืื ืืืฆืืจ ืขืืชืง ืฉื ืืคืจืืืืงื, ืืฉื ืืช ืืช ืืืงืืืืช ืืืจืืฉืื ืื ืืืืจืืื ืืจืกื ืืืฉื ืฉื ืืชืืกืฃ. ืืืชืื ืืื, ืฉืื ืืืื ืืืืื ืืงืื ืืืจืจื ืขืืืื ืืจืืื ืืขืืืืืช ืืขืืืื.
ืืื ืฉืชืฆืืืจ ื ืืกืืื ืืืืข, ืชืืฆื ืืกืคืจ ืืจืืื ืืืคืื ืืช ืืชืืืื ืืื ืืืืืืืื. ืืืืชื ืื ืชืื ืืื ืืื ื ืจืืฆื ืืกืคืจ ืืื ืืื ืืืขืชื ืืืื ืื ื ืื.
ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ืฉืืื ืืจืืจื ืืฉืื ื ืืฉืชืืฉืชื ืื ืืืจ ืืจืื ืืื.
ืงืืฉืืจืื ืืงืืฆื ืคืจืืืงื
ืืืื ืฉืืื ืืืื ืคืฉืื, ืืืืืืื ืืืืื, ืืชืืจ ืืื ืืืืฆืขืืช ืืืืื ืืืคืฉืืช ืฉื ืคืืชืื ืชืืกืคืื.
ืืืื ื ืคืชื ืืช Visual Studio (ืืฉ ืื ืืช ืืจืกืช ืืงืืืื 2019. ืืื - ืืจืืกืืช) ืื ืืฆืืจ ืคืชืจืื ืืืฉ. ืืืื ื ืชืงืฉืจ ืืืื MySuperPluginForRevit
ืื ื ื ืืฆืืจ ืชืืกืฃ ืขืืืจ Revit ืขืืืจ ืืจืกืืืช 2015-2020. ืืื, ืืืื ื ืืฆืืจ ืคืจืืืงื ืืืฉ ืืคืชืจืื (Net Framework Class Library) ืื ืงืจื ืื MySuperPluginForRevit_2015
ืื ืื ื ืฆืจืืืื ืืืืกืืฃ ืงืืฉืืจืื ื-Revit API. ืืืืื ืฉื ืืื ืืืืกืืฃ ืงืืฉืืจืื ืืงืืฆืื ืืงืืืืื (ื ืฆืืจื ืืืชืงืื ืืช ืื ื-SDKs ืื ืืืฆืื ืื ืืช ืื ืืืจืกืืืช ืฉื 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.
ืฉืื ืื ืฉืืฉ ืืืืกืืฃ ืืช ืืกืื ืขืืืจ ืชืฆืืจืืช 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 ืืืืืจ ืืื ืืกืจ ืืช ืืคืจืืืงื ืืืคืชืจืื. ืื ืืืจืื ืืื ืืฉืืืจ ืขื ืกืืจ ืืจืืฉืืช ืฉื ืคืจืคืงืฆืืื ืืกืืื! ืคืชื ืืช ืืชืืงืื ืฉื ืืคืชืจืื ืฉืื ื, ืฉื ื ืืช ืฉื ืชืืงืืืช ืืคืจืืืงื ืฉื ืืืืชื ืืืคื ืืืขื ืืช ืืคืจืืืงื ืืืืจื ืืคืชืจืื.
ืคืชื ืืช ืื ืื ืืชืฆืืจื. ืชืฆืืจื ืืืจื"ื ืืฉืืจืจ ืืืืคื ืขืงืจืื ื, ืื ืืืื ืฆืืจื ืื, ืื ืื ื ืืืืงืื ืืืชื. ืื ื ืืืฆืจืื ืชืฆืืจืืช ืืืฉืืช ืขื ืฉืืืช ืฉืืืจ ืืืืจืื ืื ื R2015, R2016, ..., R2020. ืฉืื ืื ืฉืืื ื ืฆืจืื ืืืขืชืืง ืืืืจืืช ืืชืฆืืจืืช ืืืจืืช ืืืื ืฆืืจื ืืืฆืืจ ืชืฆืืจืืช ืคืจืืืงื:
ืื ืกื ืืชืืงืื ืขื ืืคืจืืืืงื ืืคืชืื ืืช ืืงืืืฅ ืขื ืกืืืืช .csproj ืืขืืจื ืฉื ืื ืืื. ืืื, ืืชื ืืืื ืืคืชืื ืืืชื ืื ื-Visual Studio - ืืชื ืฆืจืื ืืคืจืืง ืืช ืืคืจืืืงื ืืื ืืคืจืื ืืจืฆืื ืืืื ืืชืคืจืื ืืืงืฉืจ:
ืขืจืืื ื-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). ืื ื ืกืชืื ืขืื ืืืชืจ, ื ืจืื ืฉืืกืคืจืืืช ืื ืืืืืช ืืฆืืื ืืช ืืืืื ืืื
ืืืืื ื ืื ืืขืืจืชื ื
ืฉืืืืฉ ืืืืื ื ืืืจื, ืืืืจื ื ืืืืืืช 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"ืืื ืื ื ืจืืืื ืืื ืืืืืืืช ืฉืื ื ืืฉืชื ืืช.
ืืืฉืื ืืื ืืืขืชื ืืืืื ืกืชืื - ืืื ืืืกืืฃ ืืช ืื ืืชืฆืืจืืช ืืืช ืืืช, ื ืืื ืืืฉืชืืฉ ืืืจืืืช ืืฆืืื (ืชืคืจืื "ืืขืฆืจืชยป->ยซืื ืืืช ืืฆืืื"), ืื ืืขืช ืืืืคืช ืชืฆืืจืืช, ืืืืืืืช ืืื ื ืืฉืืืืจืืช ืืืืืืืืช. ืืืืฉืจ ืืจืืืืื ืืช ืืคืจืืืงื, ืื ืื ืื ืงืืจื, ืื ืื, ืืชืืืืจืื, ืื ืฆืจืื ืืืืืช. ืื ืืฆืืชื ืคืชืจืื ืืืขืื ืืื ืืืืฆืขืื ืกืื ืืจืืืื. ืืกืืืจ ืืื ืื ืฉืื ืื ืืื ืฉื Visual Studio.
ืืื, ืขืืืจ ืืจืืื ืืฆืืื, ืืืืื ืืืฉืชืืฉ ืืืขืจืืช ืืจืืื ืืืืืืืืช ืืืืืืช
ืื, ืขืืืจ ืื ืืชืืงืื ืฉื ืืคืชืจืื ืฉืื ื (ืื ืืคืจืืืงื), ืืืืง ืืช ืืืงืฉ ืืฉืืจืช ืืืืฅ ืืืืฆื ืืื ืืช ืขื ืืงืื ืจืืง ืืชืืงืืื - ืืชืคืจืื ืืืงืฉืจ ืืืจ ืืช ืืคืจืื "ืคืชื ืืช ืืืื PowerShell ืืื".
ืื ืื ืื ืืืชืงื ืืฆืื Nuke, ืืื ืชืืืื ืืชืื ืืช ืืคืงืืื
dotnet tool install Nuke.GlobalTool โglobal
ืืขืช ืืชืื ืืช ืืคืงืืื Nuke ืืชืชืืงืฉ ืืืืืืจ Nuke ืขืืืจ ืืคืจืืืงื ืื ืืืื. ืื ื ืื ืืืืข ืืื ืืืชืื ืืช ืื ืืฆืืจื ืืืชืจ ื ืืื ื ืืจืืกืืช - ืืื ืืืืช ืื ืืืืชื ืื ื ืืชื ืืืฆืื ืงืืืฅ .nuke. ืืื ืืชื ืจืืฆื ืืืืืืจ build? [ื/ื ]
ืืงืฉ ืขื ืืงืฉ 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 ืื ืืชืื ืฉืื ืืช ืืคืงืืื Nuke (ืืชื ืืืื ืืืชืื ืืช ืืคืงืืื Nuke ืืฆืืื ืืช ืื ืืจืฉ ืืขื. ืืื ืืฉ ืื ื ืืื ืืขื, ืฉืคืืขื ืืืจืืจืช ืืืื). ืืืืจ ืืืืฆื ืขื ืืงืฉ Enter, ื ืจืืืฉ ืืื ืืืงืจืื ืืืืชืืื, ืืืืืื ืฉืืื ืืกืจื, ืืคืจืืืงื ืฉืื ื ืืืจืื ืืืืืืืืช ืืชืฆืืจืืช ืฉืื ืืช.
ืืื, ืืชื ืืืื ืืืฉืชืืฉ ื-PowerShell ืืฉืืจืืช ื-Visual Studio (ืชืคืจืื "ืืฆืคืืชยป->ยซืืืื ืืช ืืืจืืยป->ยซืงืื ืกืืืช ืื ืื ืืืืืืืช"), ืืื ืืื ืืืื ืืฉืืืจ ืืื, ืืื ืื ืืืื ื ืื.
ืื ืืกืืื ืืช ืืืืืจ ืฉืื. ืื ื ืืืื ืฉืืชื ืืืื ืืืืื ืืช ืืืคืฉืจืืช ืฉื AutoCAD ืืขืฆืื. ืื ื ืืงืืื ืฉืืืืืจ ืืืืฆื ืืื ืืืฆื ืืช "ืืงืืืืชืื".
ืชืืื ืื!
ืืงืืจ: www.habr.com