CAD แแแแแแแชแแแแแกแแแแก แแแแแแแขแแแแก แจแแแฃแจแแแแแแกแแก (
แ แแแแกแแช แแฅแแแ แแแฅแแ แแฎแแแแ แแ แแ แแแแแแแขแ แแ แฏแแ แแแแแ แฎแแ แ แแแแแแแกแฌแแแแ แแแแฌแงแแแ แแ แกแแแแแฎแจแ, แจแแแแซแแแแ แฃแแ แแแแ แแแแแแแแ แแ แแแฅแขแแก แแกแแ, แจแแชแแแแแ แแแกแจแ แกแแญแแ แ แแแแแแแแ แแ แแแฌแงแแ แแแแฃแแแก แแฎแแแ แแแ แกแแ. แจแแกแแแแแแกแแ, แแแแแฅแกแจแ แจแแแแแแแ แชแแแแแแแแแ แแแแแแฌแแแแก แจแ แแแแก แฎแแ แฏแแแแก แแ แแแแแฏแแ แแ แแ แแแก.
แแแแแชแแแแแแแก แแ แชแแแแแก แจแแซแแแแกแแก แแฅแแแ แแแแแแ แ แแแแแแแแ แแแแก แแ แแ แแชแแกแแก แแแขแแแแขแแแแชแแแกแแแแก. แแก แแแ แแแแแแ แ แแ แแแแแ แแแแฎแ แแ แ แแแ แแแแแกแ แฃแแ แแ แ แแแแแแแ แแแกแแฎแแ แฎแแแแแแ.
แแแ แแแ แ แแแจแ, แแแแแ แจแแแฎแแแแ แแแแแแก, แ แแแแแแช แแจแแแ แแ แแ แ แแแแแกแแช แแแแ แฎแแแแ แแแงแแแแ.
แแแฃแแแแ แแ แแแฅแขแแก แคแแแแแแแแ
แแ แแแแกแแแแแก, แ แแ แงแแแแแคแแ แ แแงแแก แแแ แขแแแ, แแแแฃแแแฃแ แ แแ แแแกแแแแแ, แแ แแฆแแฌแแ แงแแแแแคแแ แก แแแแแแแขแแก แแแแแแแแ แแแแก แแแกแขแ แแฅแขแฃแแ แแแแแแแแแก แแแแแงแแแแแแ.
แแแแแ แแแแฎแกแแแ Visual Studio (แแ แแแฅแแก Community 2019 แแแ แกแแ. แแแแฎ - แ แฃแกแฃแแแ) แแ แจแแแฅแแแแ แแฎแแแ แแแแแฌแงแแแขแ. แแแแแ แแแแฃแ แแแแ แแแก MySuperPluginForRevit
แฉแแแ แแแแแแแแแแ แแแแฃแแก Revit-แแกแแแแก 2015-2020 แฌแแแแแก แแแ แกแแแแแกแแแแก. แแแแขแแ, แจแแแฅแแแแ แแฎแแแ แแ แแแฅแขแ แแแแแฌแงแแแขแแจแ (Net Framework Class Library) แแ แแแแฃแฌแแแแแ แแแก MySuperPluginForRevit_2015
แฉแแแ แฃแแแ แแแแแแแขแแ แแแฃแแแแ Revit API-แแ. แ แ แแฅแแ แฃแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแขแแ แแแแแแแ แแแแแแฃแ แคแแแแแแแ (แแแแแญแแ แแแแ แงแแแแ แกแแญแแ แ 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>
แแฎแแ, แแ แแแฅแขแแก แแจแแแแแแกแแก, แแแแแขแแแแ แคแแแแแแ แแ แแฅแแแแ แแแแแ แแแฃแแ แแแแแแแแแแ แกแแฅแแฆแแแแแจแ.
แแแแแ แฌแแแแแแ แฃแคแ แ แจแแ แก - แแแฃแงแแแแแแแแ แฌแแ แแแแแแแแแแ, แ แแ แฉแแแแ แแแแแแแขแ แแแแแแงแแแแแก แ แแฆแแช Revit API-แแแ, แ แแแแแแช แแ แแแ แแแแแแแแแแแจแ แจแแแชแแแแ แแฎแแแ แแแ แกแแแแแก แแแแแจแแแแแกแแก. แแแ แแแ, แแ แฃแแ แแแแ แฃแแแ แจแแแชแแแแแ แ แแฆแแช แแแแจแ, แ แแช แแแแแแแแแแฃแแแ Revit-แแก แแแ แกแแแแ, แ แแแแแกแแแแกแแช แฉแแแ แแแแแแแแแ แแแแแแแขแก. แแแแแแจแ แแกแแแ แแแแกแฎแแแแแแแแแก แแแกแแแแแ แแแแแ, แฉแแแ แแแแแแแงแแแแแ แแแ แแแแ แแแแแแแแชแแแก แกแแแแแแแแแก. แแแฎแกแแแแ แแ แแแฅแขแแก แแแแกแแแแแ, แแแแแแแ " แฉแแแแ แแแแแกแแแแแแ"แแ แแแแแแ แจแ"แแแ แแแแแ แแแแแแแแชแแแก แแฆแแแจแแแ"แแแแ แแแแฌแแ แแ R2015.
แแแแแแแแแกแฌแแแแ, แ แแ แกแแแแแแ แฃแแแ แแแแแแขแแก แ แแแแ แช แแแแแ แแแแก, แแกแแแ แแแแแจแแแแแก แแแแคแแแฃแ แแชแแแกแแแแก.
แแแ แแแ, แกแแแแ แแแแกแแแแแแก แคแแแฏแแ แแจแ แแแ แ, แแแจแแแแ แแแแแแแแแแ แ " แฉแแแแ แแแแแแแแชแฎแแแแก"แแ แแแแแแ แจแ"แแแแฃแแแกแฎแแแแ แกแแฎแแแแ แกแแแ แชแยป แแแแแฆแแ แกแฃแคแแฅแกแ _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) แแ แกแฅแแแแก แแแแแงแแแแแแ. Life hack - แแฃ แคแแแแแแก Solution Explorer-แจแ แแแแแแขแแแแ แแ แ แกแแแแแแกแ แแ แแแฅแขแแแแ, แแ แแแแ แแ แแ แแแฅแขแแแแ, แกแแแแช แแกแแแ แฃแแแ แฉแแกแแฃแแแ แแแฃแแแก แกแแฎแแ, แแแจแแ แแ แแญแแ แแแแแ Alt แแแแแแจแแก แแแญแแ แ!
แแฆแฌแแ แแแ แแแ แแแแขแ แกแแแแแแ แแแ แแแ แแแแฃแแแก แแฎแแแ แแแ แกแแแก แแแแแขแแแแก แแแแแแขแแแแ แแ แแ แแแฅแขแจแ แแฎแแแ แคแแแแแแแก แแแแแขแแแแก แแแแแแขแแแแ - แแก แงแแแแแคแแ แ แซแแแแแ แแแแฆแแแแ แฎแแแแ. แแฎแแแฎแแ แแ แฃแชแแ แแแแฎแแแ, แ แแแแ แแแแแแแแ แ แแก แงแแแแแคแแ แ แแ แแ แแ แแแฅแขแแ แแ แแแแแแแแแแ แ แแแแ แ แแแแแแแ
แแแแคแแแฃแ แแชแแแแแก แแแแแ
แแฅ แฌแแแแแฎแแแก แแแกแ แฃแแแแแก แจแแแแแ, แแฅแแแ แจแแแแซแแแแ แแฅแแแ: "แ แแขแแ แแฆแฌแแ แ แแแ แแแแ แแแแแแ, แแฃ แกแขแแขแแ แแแฃแงแแแแแแแแ แแฎแแแ แแแแ แแก?" แแ แแ แแฆแแฌแแ แ แงแแแแแคแแ แ, แ แแแ แฃแคแ แ แแแแแแ แแแแแแชแฎแแแ, แ แแขแแ แแแญแแ แแแแ แแแ แแแแแ แแแแแแแแชแแแก แกแแแแแแแแแ แแ แ แ แแแแแแแแจแ แแแแกแฎแแแแแแแ แฉแแแแ แแ แแแฅแขแแแ. แแฎแแ แแ แฉแแแแแแแก แฃแคแ แ แแแแแแ แฎแแแแ แแฃแกแขแแ แ แ แแแแกแฎแแแแแแแแ แแ แแแฅแขแแแจแ แฃแแแ แแแแแแฎแแ แชแแแแแ แแ แแฎแแแแ แแ แแ แแ แแแฅแขแ แแแแขแแแแ.
แแ แงแแแแแคแแ แ แฃแคแ แ แชแฎแแแ แ แแ แแงแแก, แฉแแแ แแ แจแแแฅแแแแ แแฎแแ แแ แแแฅแขแก, แแ แแแแ แจแแแชแแแแ แแแ แแแ แ แแแจแ แจแแฅแแแแ แฉแแแแก แแแแแแแแ แ แแ แแแฅแขแก.
แแกแ แ แแ, แฃแแแ แแแแแก แงแแแแแกแ, แฉแแแ แแฎแกแแแ แงแแแแ แแ แแแฅแขแก แแแแแฌแงแแแขแแแแแแกแแแ, แแแ แแ แแแแแแ แ (แแแ แแแแแ แคแแแแแแก แจแแแชแแแก). แแแแ. แแ แแแฅแขแแแ 2016-2020 แแแ แกแแแแแกแแแแก. แแแฎแกแแแแ แกแแฅแแฆแแแแ แฎแกแแแ แแ แแ แฌแแจแแแแ แแ แแ แแแฅแขแแแแก แกแแฅแแฆแแแแแแแ.
แฉแแแแก แแแแแฌแงแแแขแแแแแแจแ แแแ แฉแ แแ แแ แแ แแแฅแขแ - MySuperPluginForRevit_2015. แแแฎแกแแแแ แแแกแ แแแแกแแแแแ แแ:
- แฉแแแแ แแแ "แแแแแชแฎแแแแก"แแแแจแแแแ แกแฃแคแแฅแกแ แแกแแแแแแแก แกแแฎแแแแแแ _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 แฉแแแแ แแแแคแแแฃแ แแชแแแกแแแแก. แแ แแแแแแแขแแแจแ แฉแแแ แฃแแ แแแแ แฃแแแ แแแแแงแแแแ แแแฎแ แแแแกแแแ:
- 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>
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แแ แ-แแ แ แแแ แแแแจแ แแ แแแแแแฃแกแขแ แแ แ แแแแคแแแฃแ แแชแแ via แแ. แแ แแแแ แกแแญแแ แ แแแแแขแ แแแฃแแแแจแแ แแแแ แแแแคแแแฃแ แแชแแแก แแ แแก Debug.
แแ แแฅ แฉแแแ แแแแฅแแก แแแแฅแแแก แงแแแแแคแแ แ แกแ แฃแแงแแคแแแ. แฉแแแ แแขแแแ แแแแ แแ แแแฅแขแก แฃแแแ, แฉแแแ แแแแ แฉแแแแแแแก แกแแญแแ แ แแแแคแแแฃแ แแชแแแก, แแแแฃแฌแแแแแ แแแแแแแขแก โ แแแแแฌแงแแแขแแก แแแแขแแฅแกแขแฃแ แแแแแฃแจแ (แแ แ แแ แแแฅแขแ)แแฆแแแแแแแ แงแแแแ NuGet แแแแแขแ"แแ แฉแแแ แแฎแแแแแ, แ แแแแ แแชแแแแแ แฉแแแแ แแแแแขแแแ.
แแ แแ แแขแแแแ แแ แแแแแแ แฉแแฎแจแ - แแแแกแแแแแก, แ แแ แแ แแแ แแฃแแแ แจแแแแแแ แแแแแแแ แงแแแแ แแแแคแแแฃแ แแชแแ, แจแแแแแซแแ แแแแแแแงแแแแ แกแฃแ แแแแแแก แจแแแ แแแ (แแแแแฃ "แแกแแแแแแยป->ยซแแแ แขแแฃแแ แแแแแ"), แแแแ แแ แแแแคแแแฃแ แแชแแแแแก แแแแแ แแแแกแแก, แแแแแขแแแ แแแขแแแแขแฃแ แแ แแ แแฆแแแแแ. แแ แแ แแแฅแขแแก แแฌแงแแแแกแแก, แแก แแกแแแ แแ แฎแแแแ, แแฃแแชแ, แแแแ แแฃแแแ, แแกแแช แฃแแแ แแงแแก. แแ แแแ แแแแแแ แแ แแ แแแแแแแก แแแแแฌแงแแแขแ แกแขแแแแแ แขแฃแแ แกแแจแฃแแแแแแแแก แแแแแงแแแแแแ. แแ, แกแแแแ แแฃแแแ, แแก แแกแแแ แแ แแก Visual Studio-แก แจแแชแแแแ.
แแแแขแแ, แแแ แขแแฃแแ แจแแแ แแแแกแแแแก แแแแแฌแงแแ แกแแแชแแแแฃแ แ แแแขแแแแขแฃแ แ แจแแแ แแแแก แกแแกแขแแแแก แแแแแงแแแแแ
แแกแ แ แแ, แแแแแแแ แฉแแแแ แแแแแฌแงแแแขแแก แกแแฅแแฆแแแแแจแ (แแ แ แแ แแแฅแขแ), แแแญแแ แแ แแแกแแฆแแแ แแแแแแขแแแแก แแ แแแแฌแแแแฃแแแ แแแฃแกแแก แแแ แฏแแแแ แฆแแแแแแ แกแแฅแแฆแแแแแจแ แชแแ แแแ แกแแแ แชแแแ - แแแแขแแฅแกแขแฃแ แแแแแฃแจแ แแแ แฉแแแ แแแแแแแขแ โแแแฎแกแแแแ PowerShell แคแแแฏแแ แ แแฅ".
แแฃ แแ แแแฅแแก แแแแแกแขแแแแ แแแฃแแ แแฃแแ, แจแแแแแ แฏแแ แแแฌแแ แแ แแ แซแแแแแ
dotnet tool install Nuke.GlobalTool โglobal
แแฎแแ แแแฌแแ แแ แแ แซแแแแแ แแฃแแ แแ แแแแแแฎแแแแแแ แแแแคแแแฃแ แแชแแ แแฃแแ แแแแแแแแ แ แแ แแแฅแขแแกแแแแก. แแ แแแชแ แ แแแแ แแแแฌแแ แ แแก แฃแคแ แ แกแฌแแ แแ แ แฃแกแฃแแแ - แแแแแแกแฃแ แแ แแแแฌแแ แแแ แแแ แแแแแแ .nuke แคแแแแ. แแกแฃแ แ แแแแงแแแแ build? [y/n]
แแแแญแแ แแ 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