áCAD áá°áá áŞáŤáá˝ á°á°áŞáá˝á á˛ááᥠ(
á ááľ áááá áĽáť á˛ááááľ ááá á ááá á áá áááľ ááľáĽ áĽáŤáľá á¨á°áአáá᪠á¨áá á ááá á¨ááŽáááąá á á ááľáŤáľáŁ á áľááááášá áŚáłáá˝ ááá¨á áĽá á¨ááááá á á˛áľ áľáŞáľ ááá á áá˝ááᢠá áá áá á¨áľáŁ á áŽáą áá á¨áá°á¨á áááŚá˝ áĽá á¨á°á ááá ááŞáá˝á áá¨ááŤáá˘
áááľ áĽá áĽáááľ á˛áŤááᣠáá á áá°áľ á áŤáľ á°á á¨ááŤá°ááá áľ áĽá ááááśá˝á áŤáááᢠá áá ááááľ áá áá áĽáá°á¨á¨áľáŠ áĽá áá áŤá á ááš áĽáá°áá ááááá áĽáááááá˘
á ááááŞáŤ, ááá˝ á¨áá áĽá áá¨á á áá á¨á°á áááŠáľá áá´ áĽáááá¨áľ
á¨ááŽáááľ áááá˝ á áááá˝
áĽá áááá ááá áááᣠááá˝ áĽá ááá¨áłáľ á¨ááťá áááľá¨áᣠá¨áááá áááľ á¨áá ááłá á áá áá áááá ááá áĽáááťááá˘
áŞáĽáá áľáąá˛áŽá áĽáááá°á (á¨áá á á¨á°áĽ 2019 áľáŞáľ á ááᢠáĽá á á - á áŠá˛áŤá) áĽá á á˛áľ áááľá áĽááá áᢠáĽááĽáŤáᢠMySuperPluginForRevit
áRevit á2015-2020 áľáŞáśá˝ á°á°áŞ áĽáá°áŤááᢠáľááá , á áááľáá ááľáĽ á á˛áľ ááŽáááľ áĽááĽáŤáá (á¨ááľááá áááá ááá á¤á°-áá˝áááľ) áĽá áĽá°áááá MySuperPluginForRevit_2015
áá° Revit API ááŁááťáá˝á áá¨á á ááĽáᢠá áĽááἠáá° á áŤáŁá˘áŤá áááá˝ á áááá˝á áá¨á áĽáá˝ááá (ááá á áľááá á¨áááľá á¤áľá˛áŹáá˝ ááá áááá ᨠRevit áľáŞáśá˝ ááŤá áŤáľáááááłá) ááá áá á ááĽáł áá° ááľ áĽáááłáá áĽá ᨠNuGet áĽá áá áĽááŤáľáłááᢠá áŁá áĽááľ ááŹáá˝á ááááľ áľá˝ááá ᣠáá áĽá á¨áŤá´á áĽá ááááá˘
áĽá áá áŤááá á áá á ááĽá áá á áá á á áŤáľáá "ááŁááťáá˝"áĽá á¨ááááá ááĽá ááá¨áĄ"packs.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>
á áá, á ááľ ááŽáááľ á˛áááĄ, á¨áĽá
á ááľáĽ áŤá áááá˝ áá° á¨áá¤áľ á áá á áááá áĄá.
áá° ááľ áĽáááľ - á¨áĽá áááá á¨Revit API á¨áá ááá áĽáá°áá áá á áľáĄáľáŁ áá
á á¨áá áá° áá á áłá˛áľ áľáŞáśá˝ á˛ááá á°ááá§áᢠá°á
áᣠááá áĽá á°á°áŞáá á ááá°áŤá ᾠᨠRevit áľáŞáľ áá á áááľá¨áľ á áŽáą ááľáĽ á¨áŤáłá˝á á¨áá ááá áááἠá ááĽáᢠá áŽáľ ááľáĽ áĽáá°áá
áŤá ááŠááśá˝á ááááłáľ áááłá á¨áá ááá ááááśá˝á áĽáá ááááᢠá¨ááŽáááľ áŁá
áŞáŤáľá áááṠᣠáá° áľáŠ áááąáá°áĽá°áĽ"áĽá á ááľá áá"áááłá á¨áá ááá ááááľÂť áťá R2015.
ááááą ááááąá á¨á áá áá á áĽá á¨áááľ áá á ááłá¨á áĽááłáá áľ áἠáá áá˘
á°á á ᣠá ááĽá¨áľ ááľáŽáą ááľáĽ áĽáŤáá áá˛áŤáá áá° áľáŠ áĽáááłáá á˘áľáá áŤ"áĽá á ááľá áá"ááŁáŞ á¨áľá áŚáłÂťá áĽáŤ á áľáááľ _2015á¨áľá áŚáłá˝á áááá°áá áĽá á¨áľáĽá°áŁ áľá áá áĽáá˛áááĄ-
á áĽá áááłáŁ á áá¨á¨áťá áááľáŁ á¨ááá áľáŞáśá˝ á°á°áŞáá˝ áá° á ááľ á áá á°á¨áá¨ááᣠáľááá á¨áľáĽá°áŁ áľááź á¨á áš á áĽáŤ áá áááŤáᢠ_20xx. ááá áá ááááš á á°ááŤáŠ á áááá˝ ááľáĽ áĽáá°ááá á¨á á á á áĽáŤáá á¨áľáĽá°áŁá áľá ááľáááľ áá˝áá.
áá° ááá áŽáľ áĽáááľ ááá 1.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;
}
}
}
áá˛áŤáá ᨠ2015 á áá áŤááľá áááá ᨠRevit áľáŞáśá˝ áááľ ááľáĽ á áľááŁá (á˝ááá á áá˝áá áľ áá á¨áá áŠáľ) áĽá áá˛áŤáá á á°ááłáłá á áĽááľ áá á¨áľ á¨áááĽáŤá¸á áááłá á¨áá ááá ááááśá˝ áááŤá¸áá áááľ ááľáĽ á áľááŁáá˘
áá° ááá áľáááľ áĽáááľá˘ á áĽá áááľá ááľáĽ á á˛áľ ááŽáááľ áĽáááĽáŤáá, á Revit 2016 áľá áá°á°áŞá áľáŞáľ áĽáť, á¨áá á¨á°ááášáľá áááá áĽááááá˝ áĽáá°ááááá, á á á°á á°á¨á°á 2015 ááĽáá á 2016 ááĽá á áá°áŤáľ ááá áá ááá 1.cs á¨á á˛áą ááŽáááľ á°áááˇá.
á¨ááááá áŽáľ áá ááá áŤáľáá - ááá 1.cs - áĽá ááľááá á áá áĽá áá° áĽáą á ááá á á á˛áľ ááŽáááľ ááľáĽ ááľááŁáľ áĽáť áŤáľáááááᢠá áááá˝á áááľááŁáľ áááľ ááááśá˝ á á:
- á¨á á - á áľááááá á¨ááłááľ ááá á ááŽáááą áá á á áŤáľáá ᣠááĽáá ááá¨áĄ"áŤááÂť->>ááŁá á áŁá", á áá¨áá°á ááľáŽáľ ááľáĽ á°ááááá ááá áŤáá áĽá á¨á ááŤá ááá "áŤááÂť á ááŤá áá¨áĽ ÂťáĽáá° á ááá áŤááÂť
- á áá - áá á áááľá á áłá˝ ááľáĽ á¨á°ááááá ááá (ááá áĽáá˛áŤáá áááá˝á ááá áá á áááá˝á) ááá¨áĄ áĽá Alt áááá á ááŤá áá° á á˛áľ ááŽáááľ áááľáąáľá˘ á˛ááľáą Alt áááá á˛áŤá á ááłááľ áá áŤáá á áá á¨áá°áá ááááľ áá° ááľáľ áĽáá°ááá¨á áŤáŤáá˘
á¨á°ááá: á áá á ááá ááľáĽ áľáá˝ á፠áááŁáľ áá áአ- áĽá áááá˝á áááľá°ááá ᣠáááá ἠá ááĽááľ Shift + Alt!
á¨áá°áą á áá, á ááá°áá ááŽáááľ ááľáĽ ááá ááá¨áá ááá 1.cs á á°ááá á áś (á°ááŤá ááľáľ)
á á ááłáá ááľáŽáľ ááľáĽ áŽáľá á ááŤááľáá áľ áá áŽáąá áááłá¨áľ á á¨áľáá ááŽáááľ á ááľ ááľáĽ ááá¨áĽ áá˝áá ᣠáá á áŽáľ á á°ááŤáŠ áááłá áá ááá ááááśá˝ á˛áľá°áŤá¨á ááá¨áľ áŤáľá˝áááłá á˘
á áá áĽá áľ áá°á¨áľ, áááá ááá˝ ááŽáááśá˝á (2017-2020) áĽáááĽáŤáá. á¨á áááľ á áá - áááá˝á á áááľáá á áłá˝ ááľáĽ á¨áá á¨áłá ááŽáááą áłááá áá°á á˛á áĽáá° á ááá á¨ááĄá áľ ááŽáááľ ááľá°á á¨áá ᨠAlt áááá ááŤá á áá˝áá!
á á˛áľ á¨á°á°áŞá áľáŞáľ áĽáľáŞá¨áá ááá á á˛áľ áááá˝ áá° ááŽáááą áĽáľáŞá¨áአáľá¨áľ á¨á°ááá¸á á ááŤá á áŁá áĽáŠ áá - áá áá á áŁá á áľá᪠áááá. áĽá á á áἠáá, á áľáááľ áááá á á ááľ ááŽáááľ áĽáá´áľ áĽáá°áááł á áľáááľ á°ááááĽáŠ áĽá áá° ááá°áá áá´ áĽáááłáá.
áááá á áľááľ
áĽáá áŤáá ᥠá áá âá˝áá áľá ááá°áá áá˛áŤáá á¨áá ᣠá¨ááááŞáŤáá áá´ á¨ááá˝á¨á áá áááá áá?!â áĽáá áááá áľá˝ááá ᢠáĽá ááá áááłá á¨áá ááá ááááśá˝ áĽáá°ááŤáľáááá áĽá ááŽáááśáťá˝á á áá á áááľ áŚáłáá˝ áĽáá°áááŤáŠ á¨á áá ááá áááľá¨á áááá ááá ááá˝áŠá˘ áĽá á áá á ááľ ááŽáááľ áĽáť á áá°á áá ááááľ á¨ááŽáááľ ááŠááśá˝ áá°áá á áĽááłááĽá áá áἠááá˝ áááááá.
áĽá áááá ááá á¨á áá ááá˝ áááľá¨á, á á˛áľ ááŽáááľ á áááĽáá, ááá áá á áá áŁáá ááŽáááłá˝á áá áááŚá˝á áĽáá°áááá á ááááŞáŤ ááááľ.
áľááá , á ááááŞáŤ, áááá ááŽáááśá˝ á¨áááľáá ááľáĽ áĽááľáááłáá, á¨ááá á áľá°áá (áááá˝á á ááĽáł á¨áŤá). áĽáááŤá˘ ááŽáááśá˝ á 2016-2020 áľáŞáśá˝. áá á°áŠá á¨áááľáá áá ááááą áĽá á¨áĽááá á ááŽáááśá˝ á áááá˝ áĽá፠áá°áá.
á áááľáá ááľáĽ á ááľ á¨áá¨á ááŽáááľ á áá - MySuperPluginForRevit_2015. ááĽá¨áśášá ááááą áĽá:
- á áľáŠ áá "áľáá áŤÂť á áĽáŤáá á¨áľáĽá°áŁá áľá áŤáľáááą _2015 (ááá á áá ááá áááá)
- á áľáŠ áá "áá°áĽá°áĽÂťáááłá á¨á°á ááᨠááááľá áŤáľáááą R2015 á¨á°ááá ááľá
ááłá°á˘áŤáĄ- á á áἠáá ᨠVisual Studio áľáŞáľ áá á˝áá á á - áááłá á¨áá ááá ááááśá˝ á ááŽáááľ áŁááŞáŤáľ ááľáŽáľ ááľáĽ á ááłáŠáᣠááá áĽááłá á˘áááᢠáá á˝áá áŤááĽá á¨.csproj ááá áĽáŤáľá ááľáááľ áŤáľáááááłáᢠááá áá, á ááá á áĽáą ááľáĽ ááľáŤáľ á ááĽá, áľááá áŤááĽáĄ.
á áĽáŤáá á ááľáááľ ááŽáááąá á Solution Explorer ááľáŽáľ ááľáĽ áĽáá°áá áá°áá _2015 áĽá á¨á፠ááŽáááąá á¨áááľáá áŤáľáááąáľ. áá á¨áá˝áá á á áá˝á áľáááľ áĽá áľááľ ááá á á á áľááá áá! á¨áááľááŤá˝áá á áá ááááą, á¨ááŽáááľ áá á°áŠá á á°ááłáłá ááááľ áá°áá áĽá ááŽáááąá áá° áááľáá ááá°á ááŤá.
á¨áá á¨áľ á áááŁáŞáá ááááąá˘ á¨á ááŞáŤ áá á áááá á ááá á°á¨á, á áŤáľáááá, áľááá áĽáá°ááááá. áá°á á˛á ááĽá á¨á°áááą áľáá˝ áŤáá¸á á á˛áľ á ááááŽá˝á áĽáááĽáŤáá R2015, R2016áŁâŚ ᣠR2020. á¨ááá˝ áá áŽá˝ á ááĽáŽá˝á áá áłáľ áĽáá°ááŤáľáááá áĽá á¨ááŽáááľ áá áŽá˝á ááá á áĽáá°ááááá áἠáá ááĄ
á¨ááŽáááą áá áá° á ááá áĽáááłáá áĽá áááá á¨.csproj á áĽáŤ áá ááĽááľá á ááá˝ á ááłá˘ ááľáĽ áĽáá¨áá°áááᢠá áááŤá˝á áá á Visual Studio ááľáĽ ááááľ áá˝áá - ááŽáááąá ááŤáá áŤáľáááááłá áĽá á¨á፠áľááááá ááĽá á á ááľ áááá ááľáĽ áááá.
á áŞáĽáá áľáąá˛áŽ ááľáĽ á ááľááľ ááľá¨á áĽááłá á°ááŤá ááᣠá ááłá˘á áľáááŤáľá°áŤááá áľááá áá á˘
á ááá ááľáĽ ááĽá¨ áááŽá˝á áĽááŤáá
áá° á¨á°ááá°á (á¨ááááŞáŤá) á áŤá áááą á¨ááĽá¨áľ áĄáľá áĽá ááĽá¨áąá áááá¨áą á¨áľáĽá°áŁ áľá - áá á¨ááŁá¤á áľá áá áĽá áŤá á áĽáŤ ááá¨á áááŁá _2015. á áĽáŤ áŤá, á¨á፠áŤáľáááąáľ.
áááł áŤáá á áŤá ááááľ
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
á ááááá - áĽáá°áááááá˘
á áľá áááł áŤáá á áŤá
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
á áĽáľááľ á°á¨á áá áááľáŤáľ áĽá áŽáąá ááá¨á á áľááá áááá. áŁá áŞáŤáąá áááááľá áááἠáá˝áá - á¨á°ááŤáŠ á¨áá¤áľ ááááśá˝á áŤááá ᣠáááłá á¨áá ááá ááááśá˝á áááአᣠááá°.
á áá á á˛áľ ááĽá¨ áááŽá˝á áĽáááĽáŤáá á¨ááĽá¨áľ áĄáľá áá áá áŽá˝. á áĽááá ááĽá¨ áááŽá˝ ááľáĽ á áŤáľ ááĽá¨áśá˝á áááááľ áĽáť áŤáľááááá-
- á¨áá¤áľ áąáŤ - á¨áá¤áľ á áá. ááŁáŞ áĽá´áľ á ááá áťáá binR20xx
- Constants áááłá á¨áá ááá ááááśá˝ áá¸áᢠááá á áá áľ ááá; R20xx
- TargetFramework áľáŞáľ - á¨ááľá¨á áľáŞáľ. á¨á°ááŤáŠ á¨Revit API áľáŞáśá˝ á¨á°ááŤáŠ ááľá¨áŽá˝á áááááľ áááááá˘
- á¨áľáĽá°áŁ áľá - á¨áľáĽá°áŁ áľá (áááľá á¨ááá áľá)ᢠá¨áááááá á¨áá°áĽá°á˘áŤ áľá á ááĽáł ááťá áá˝áá, ááá áá áá áá á ááááľ, áĽá´áąá áĽáá˛á˝á áĽáááááłáá $(á¨áľáĽá°áŁ áľá)_20xx. áá áá áááľá¨á, á¨áá áá°á á áĽáŤáá á¨áľáĽá°áŁá áľá á ááĽá°áá
á¨áĽááá áá á áŤááľ á áŁá á áľáááá áŁá ᪠ááá áłáááአá ááá áá° ááá˝ ááŽáááśá˝ áááá ἠáá. á áá á á˝áá ááľáĽ ᨠ.csproj áááá á á ááá áááśá˝ á áŤáá¤áááá˘
á°á
á, á¨ááŽáááąá áŁá
áŞáŤáľ á áááá - á áľá¸á᪠á áá°áá. ááá áá á á°áŤá°áąáľ á¤á°-ááťáááľ (NuGet packs) áá áĽáá°áá°á¨áᢠáá° ááľ á¨á°ááá¨áľá, á¨á°áŤá°áąáľ á¤á°-ááťáááľ á ááĽá¨ áááŽá˝ áĽáá°á°áááš áĽááŤáá
á ááľ á áŤá ááĽááłáł áááŁá
á¤ááááľ á áá áá áá¨á áá°ááŤáŠ áá áŽá˝ á¨á°ááŤáŠ ᨠ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 áĽá áá˝ áá°áá áŠá áľ ááááąâ áĽá á¨áĽá áĽá áá˝ áĽáá´áľ áĽáá°áááᥠáááá¨áąá˘
áĽáá á áá á°á¨á, áá° áá¨á¨áťá áá¨á¨áť á°á¨áľáŠ - áááá á ááááŽá˝á á á ááľ áá ááá°áĽá°áĽ, á¨áľáĽáľáĽ áľáĽáľáĽá (ááá) áá áá áĽáá˝ááá.áá°áĽá°áĽÂť->>á¨áĄáľá áľáĽá°áŁâ)ᣠááá áá áá áŽá˝á á ááááŠá áľ ááᣠáĽá áá˝ á áŤáľ á°á áá°áá áŠá áľ á ááááąáᢠáĽá ááŽáááąá á áááŁá áá áľ áá, áĽáá˛á á áá¨á°áľá, ááá áĽááłá, á ááľá ááłáĽ, ááá á áá áľ. ááá á˝áá áááľá á ááááá áá°á á áá´á˘ áĽá ááááŁáľá áá á¨áĽááł áľáąá˛áŽ áľá á°áľ ááá˘
áľááá
, ááĄáľá áľáĽá°áŁ, áአá ááśáá˛á á¨áá°áĽá°á˘áŤ áá´á ááá áá á°ááľáá
áľááá áá° á¨áááľááŤá˝á á áá (ááŽáááą áłááá) áááą, áááá ááŤá áá°áŤáľ áĽá á á ááá ááľáĽ áŁáá áŁáś áŚáł áá á áá á á áŤáľáá - á á ááľ áááá ááľáĽ ááĽáá ááá¨áĄ"á¨PowerShell ááľáŽáľá áĽáá ááááąÂť.
áĽááľá áŤááŤá ááŽ, á¨ááŤá á ááááŞáŤ áľáááá ááá
dotnet tool install Nuke.GlobalTool âglobal
á áá áľáĽáá áťá áᎠáĽá áĽáá˛áŤáá አáá á¨ááᢠáᎠáá áá ááŽáááľ. á áŠá˛áŤá á áľááá áĽáá´áľ áĽáá°áá˝áá á ááá á - á áĽááááá ááťáá .nuke ááá ááááľ á áá°áťááᢠáááŁáł áááá ááááá? [y/n]
ᨠY áááá á°áŤá áĽá á¨á፠ááĽáł á áá áśá˝ áááŤáᢠá áŁá áááá á ááŤá áĽáá áááá MSBuild, áľááá áĽáá° á á˝á áłá áá˝ áĽááłá áááľ áĽáá°áŁáá:
áá° áŞáĽáá áľáąá˛áŽ áĽáááľáŁ áá á á á˛áľ ááŽáááľ áľáá°á¨áá¨á áľ áááľááá áĽáá°áá áááŤá ááááááᢠáááľááá áĽáá°áá ááŤá áĽá ááŽáááľ áĽááłáá áááá¨áą ááááŁáľ áĽá á¨áááááá á á ááľ ááá ááľáĽ áĽáť áá - 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 áááŤá áĽáŤáľá ááá áá˝ááᢠáĽáá á¨áá¨á á ááłááľ "á°áá áášá" áĽáá°ááŤáá á°áľá á á°áááá.
áááŤá°áááľ áĽá¨áľ áĽááá°áááá!
ááá: hab.com