ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

CAD အပလီကေသရဟင်သမျာသအတလက် ပလပ်အင်မျာသကို တီထလင်သည့်အခါ (ငါ့ကိစ္စမဟာတော့ ၎င်သတို့သည် AutoCAD၊ Revit နဟင့် Renga မျာသဖဌစ်သည်) အချိန်ကဌာလာသည်နဟင့်အမျဟ ပဌဿနာတစ်ခုပေါ်လာသည် - ပရိုဂရမ်မျာသ၏ဗာသရဟင်သအသစ်မျာသထလက်ရဟိလာသည်၊ ၎င်သတို့၏ API အပဌောင်သအလဲမျာသနဟင့် plugins မျာသ၏ဗာသရဟင်သအသစ်မျာသကို ပဌုလုပ်ရန်လိုအပ်သည်။

သင့်တလင် ပလပ်အင်တစ်ခုသာ ရဟိသည် သို့မဟုတ် ကကိစ္စအတလက် ကိုယ်တိုင် သင်ကဌာသပေသသည့် အစပဌုသူ ဖဌစ်နေပါက၊ သင်သည် ပရောဂျက်၏ မိတ္တူကို ရိုသရဟင်သစလာ ပဌုလုပ်နိုင်ပဌီသ ၎င်သတလင် လိုအပ်သော နေရာမျာသကို ပဌောင်သလဲကာ plugin ဗာသရဟင်သအသစ်ကို စုစည်သနိုင်ပါသည်။ ထို့ကဌောင့်၊ ကုဒ်၏နောက်ဆက်တလဲပဌောင်သလဲမဟုမျာသသည် အလုပ်သမာသစရိတ်မျာသ အမျာသအပဌာသတိုသလာမည်ဖဌစ်သည်။

အတလေ့အကဌုံနဟင့် ဗဟုသုတမျာသရရဟိလာသည်နဟင့်အမျဟ ကလုပ်ငန်သစဉ်ကို အလိုအလျောက်လုပ်ဆောင်ရန် နည်သလမ်သမျာသစလာကို သင်တလေ့လိမ့်မည်။ ငါ ဒီလမ်သကို လျဟောက်ခဲ့ပဌီသ ငါဘယ်လိုအဆုံသသတ်ပဌီသ ဘယ်လိုအဆင်ပဌေတယ်ဆိုတာ မင်သကိုပဌောပဌချင်တယ်။

ညသစလာ သိသာထင်ရဟာသပဌီသ အချိန်အတော်ကဌာ အသုံသပဌုခဲ့သည့် နည်သလမ်သကို ကဌည့်ကဌပါစို့။

ပရောဂျက်ဖိုင်မျာသသို့ လင့်ခ်မျာသ

အရာအာသလုံသကို ရိုသရိုသရဟင်သရဟင်သ၊ အမဌင်အာရုံနဟင့် နာသလည်နိုင်စေရန်၊ plugin ဖလံ့ဖဌိုသတိုသတက်မဟု၏ စိတ္တဇနမူနာကို အသုံသပဌု၍ အရာအာသလုံသကို ဖော်ပဌပါမည်။

Visual Studio ကိုဖလင့်ကဌပါစို့ (ကျလန်ုပ်တလင် Community 2019 ဗာသရဟင်သရဟိသည်။ ဟုတ်ကဲ့ - ရုရဟာသဘာသာဖဌင့်) နဟင့် ဖဌေရဟင်သချက်အသစ်တစ်ခုကို ဖန်တီသကဌပါစို့။ သူ့ကိုခေါ်ရအောင် MySuperPluginForRevit

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

2015-2020 ဗာသရဟင်သမျာသအတလက် Revit အတလက် ပလပ်အင်တစ်ခု ပဌုလုပ်ပါမည်။ ထို့ကဌောင့်၊ ဖဌေရဟင်သချက် (Net Framework Class Library) တလင် ပရောဂျက်အသစ်တစ်ခုကို ဖန်တီသပဌီသ ၎င်သကို ခေါ်ကဌပါစို့ MySuperPluginForRevit_2015

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

Revit API သို့ လင့်ခ်မျာသထည့်ရန် လိုအပ်ပါသည်။ ဟုတ်ပါတယ်၊ ကျလန်ုပ်တို့သည် ဒေသဆိုင်ရာဖိုင်မျာသသို့ လင့်ခ်မျာသကို ပေါင်သထည့်နိုင်သည် (ကျလန်ုပ်တို့သည် လိုအပ်သော SDKs သို့မဟုတ် Revit ဗာသရဟင်သအာသလုံသကို ထည့်သလင်သရန် လိုအပ်ပါမည်)၊ သို့သော် ကျလန်ုပ်တို့သည် မဟန်ကန်သောလမ်သကဌောင်သအတိုင်သ ချက်ခဌင်သလုပ်ဆောင်ပဌီသ NuGet အထုပ်ကို ချိတ်ဆက်ပါမည်။ ပက်ကေ့ဂျ်အနည်သငယ်ကို သင်ရဟာတလေ့နိုင်သော်လည်သ ကျလန်ုပ်သည် ကျလန်ုပ်၏ကိုယ်ပိုင်ကို အသုံသပဌုပါမည်။

ပက်ကေ့ဂျ်ကိုချိတ်ဆက်ပဌီသနောက်၊ item ပေါ်တလင် right-click နဟိပ်ပါ။ကိုသကာသ"ပဌီသ​တော့ ပစ္စည်သကို​ရလေသပါ"packages.config ကို PackageReference သို့ ရလဟေ့ပါ...»

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

အကယ်၍ ကအချက်တလင် သင် ရုတ်တရက် ထိတ်လန့်သလာသပါက၊ package properties window တလင် အရေသကဌီသသောအရာ မရဟိတော့သောကဌောင့် "ပဌည်တလင်သမဟာ ကူသယူပါ။“ကျိန်သသေတန်ဘိုသ သတ်မဟတ်ဖို့ လိုတယ်။ မမဟန်သောထို့နောက် မထိတ်လန့်ပါနဟင့် - ပရောဂျက်နဟင့်အတူ ဖိုင်တလဲသို့သလာသပါ၊ သင့်အတလက် အဆင်ပဌေသော တည်သဖဌတ်သူရဟိ .csproj တိုသချဲ့မဟုဖဌင့် ဖိုင်ကိုဖလင့်ပါ (ကျလန်တော် Notepad++ သုံသသည်) နဟင့် ကျလန်ုပ်တို့၏ပက်ကေ့ဂျ်နဟင့်ပတ်သက်သော ထည့်သလင်သမဟုကို ရဟာပါ။ သူမ ယခုပုံရသည်

<PackageReference Include="ModPlus.Revit.API.2015">
  <Version>1.0.0</Version>
</PackageReference>

၎င်သတလင် ပစ္စည်သတစ်ခုထည့်ပါ။ runtime. ကကဲ့သို့ ထလက်ပေါ်လာလိမ့်မည်-

<PackageReference Include="ModPlus.Revit.API.2015">
  <Version>1.0.0</Version>
  <ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>

ယခု၊ ပရောဂျက်တစ်ခုတည်ဆောက်သောအခါ၊ အထုပ်မဟဖိုင်မျာသကို အထလက်ဖိုင်တလဲသို့ ကူသယူမည်မဟုတ်ပါ။
နောက်ထပ်သလာသကဌပါစို့ - ကျလန်ုပ်တို့၏ပလပ်အင်သည် ဗာသရဟင်သအသစ်မျာသထလက်ရဟိလာသောအခါ အချိန်နဟင့်အမျဟ ပဌောင်သလဲသလာသသည့် Revit API မဟ တစ်ခုခုကို အသုံသပဌုမည်ဟု ချက်ချင်သစိတ်ကူသကဌည့်ကဌပါစို့။ သို့မဟုတ်ပါက ကျလန်ုပ်တို့သည် plugin ကိုပဌုလုပ်နေသည့် Revit ဗာသရဟင်သပေါ်မူတည်၍ ကုဒ်ထဲတလင် တစ်ခုခုကို ပဌောင်သလဲရန် လိုအပ်ပါသည်။ ကုဒ်တလင် ကလဲပဌာသမဟုမျာသကို ဖဌေရဟင်သရန်၊ အခဌေအနေအလိုက် စုစည်သမဟုသင်္ကေတမျာသကို အသုံသပဌုပါမည်။ ပရောဂျက်ဂုဏ်သတ္တိမျာသကိုဖလင့်ပါ၊ “ tab ကိုသလာသပါ။အစည်သအဝေသ"ကလင်သထဲမဟာ"Conditional compilation အမဟတ်အသာသ"ရေသကဌရအောင် R2015.

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

Debug နဟင့် Release configurations နဟစ်ခုလုံသအတလက် သင်္ကေတကို ထည့်ရမည်ကို သတိပဌုပါ။

ကောင်သပဌီ၊ ကျလန်ုပ်တို့သည် Properties Window တလင်ရဟိနေစဉ်၊ ကျလန်ုပ်တို့သည် “tab” ကို ချက်ချင်သသလာသပါ။လဌဟောကျလဟာ"ကလင်သထဲမဟာ"မူရင်သအမည်နေရာ» နောက်ဆက်တလဲကို ဖယ်ရဟာသပါ။ _2015ထို့ကဌောင့် ကျလန်ုပ်တို့၏ namespace သည် စကဌဝဠာဖဌစ်ပဌီသ စည်သဝေသပလဲအမည်မဟ သီသခဌာသဖဌစ်နေစေရန်။

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ကျလန်ုပ်၏ကိစ္စတလင်၊ နောက်ဆုံသထုတ်ကုန်တလင်၊ ဗာသရဟင်သအာသလုံသ၏ plugins မျာသကို ဖိုင်တလဲတစ်ခုထဲတလင် ထည့်သလင်သထာသသောကဌောင့် ကျလန်ုပ်၏ စုဝေသမဟုအမည်မျာသသည် ဖောင်၏နောက်ဆက်တလဲတလင် ရဟိနေပါသည်။ _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 အတလက် plugin ဗာသရဟင်သအတလက်သာ ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက်တလင် ပရောဂျက်အသစ်တစ်ခုကို ဖန်တီသပါသည်။ အထက်ဖော်ပဌပါအဆင့်အာသလုံသကို အသီသသီသပဌန်လုပ်ကာ 2015 နံပါတ်ကို 2016 နံပါတ်ဖဌင့် အစာသထိုသပါသည်။ သို့သော် ဖိုင် Class1.cs ပရောဂျက်အသစ်မဟ ဖျက်ပါ။

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

လိုအပ်သောကုဒ်နဟင့်အတူ ဖိုင်- Class1.cs - ကျလန်တော်တို့မဟာ ရဟိပဌီသသာသဖဌစ်ပဌီသ ပရောဂျက်အသစ်တစ်ခုမဟာ ၎င်သကို လင့်ခ်တစ်ခုထည့်ဖို့ လိုပါတယ်။ လင့်ခ်မျာသကို ထည့်သလင်သရန် နည်သလမ်သနဟစ်ခုရဟိသည်။

  1. ရဟည်သည်။ - ပရောဂျက်ကို right-click နဟိပ်ပဌီသ "ပေါင်သ"->"ရဟိပဌီသသာသဒဌပ်စင်"ပလင့်သောဝင်သဒိုသတလင်၊ လိုအပ်သောဖိုင်ကိုရဟာဖလေပဌီသ ရလေသချယ်စရာအစာသ"ပေါင်သ" option ကိုရလေသပါ "ချိတ်ဆက်မဟုအဖဌစ် ထည့်ပါ။»

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

  1. တိုတောင်သသော - ဖဌေရဟင်သချက်ရဟာဖလေသူတလင် တိုက်ရိုက်၊ အလိုရဟိသောဖိုင် (သို့မဟုတ် ဖိုင်မျာသ သို့မဟုတ် ဖိုင်တလဲမျာသပင်) ကိုရလေသချယ်ပဌီသ Alt ခလုတ်ကို ဖိထာသပဌီသ ပရောဂျက်အသစ်တစ်ခုသို့ ဆလဲယူပါ။ သင်ဆလဲယူလိုက်သည်နဟင့် Alt ခလုတ်ကို နဟိပ်လိုက်သောအခါ၊ mouse cursor သည် အပေါင်သလက္ခဏာမဟ မဌဟာသတစ်စင်သသို့ ပဌောင်သသလာသသည်ကို တလေ့ရပါမည်။
    UPD: ကစာပိုဒ်တလင် အနည်သငယ် ရဟုပ်ထလေသမဟုမျာသ ပဌုလုပ်ခဲ့သည် - ဖိုင်မျာသစလာကို လလဟဲပဌောင်သရန် ဖိထာသသင့်သည်။ Shift + Alt!

လုပ်ထုံသလုပ်နည်သကိုဆောင်ရလက်ပဌီသနောက်၊ ဒုတိယပရောဂျက်တလင် ဖိုင်တစ်ခုရရဟိပါမည်။ Class1.cs သက်ဆိုင်ရာ အိုင်ကလန် (အပဌာရောင်မဌဟာသ) ဖဌင့်

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

တည်သဖဌတ်ဝင်သဒိုသရဟိ ကုဒ်ကို တည်သဖဌတ်သည့်အခါ၊ ကုဒ်ကိုပဌသရန် မည်သည့်ပရောဂျက်အကဌောင်သအရာကို သင်ရလေသချယ်နိုင်သည်၊ ၎င်သသည် မတူညီသောအခဌေအနေအလိုက် စုစည်သမဟုသင်္ကေတမျာသအောက်တလင် ကုဒ်ကို တည်သဖဌတ်ထာသသည်ကို မဌင်တလေ့နိုင်စေသည်-

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ကအစီအစဉ်ကို အသုံသပဌု၍ အခဌာသပရောဂျက်မျာသ (2017-2020) အာသလုံသကို ဖန်တီသပါသည်။ Life hack - အကယ်၍ သင်သည် အခဌေခံပရောဂျက်မဟမဟုတ်ဘဲ Solution Explorer တလင်ဖိုင်မျာသကိုဆလဲယူပါက ၎င်သတို့ကိုလင့်ခ်အဖဌစ်ထည့်သလင်သထာသသည့်ပရောဂျက်မဟဆိုလျဟင် Alt သော့ကိုဖိထာသရန်မလိုအပ်ပါ။

ပလပ်အင်ဗာသရဟင်သအသစ်ထည့်သည့်အချိန် သို့မဟုတ် ပရောဂျက်သို့ ဖိုင်အသစ်မျာသထည့်သည့်အခိုက်အတန့်အထိ ဖော်ပဌထာသသောရလေသချယ်ခလင့်သည် အလလန်ကောင်သမလန်ပါသည်။ မကဌာသေသမီက ကျလန်တော်သည် ပရောဂျက်တစ်ခုနဟင့် အာသလုံသကို ဘယ်လိုခလဲရမလဲဆိုတာ ရုတ်တရက် သဘောပေါက်သလာသပဌီသ ဒုတိယနည်သလမ်သကို ဆက်သလာသနေပါတယ်။

ဖလဲ့စည်သမဟု၏ ပဉ္စလက်

ကနေရာတလင်ဖတ်ပဌီသသည်နဟင့် "ဆောင်သပါသသည် ဒုတိယအကဌောင်သချက်ချင်သဖဌစ်လျဟင် ပထမနည်သလမ်သကို အဘယ်ကဌောင့်ဖော်ပဌသနည်သ။" ပဌီသတော့ အခဌေအနေအလိုက် စုစည်သမဟုသင်္ကေတတလေ ဘာကဌောင့် လိုအပ်တာလဲ ဆိုတာကို ပိုရဟင်သရဟင်သလင်သလင်သ သိနိုင်စေဖို့ အရာအာသလုံသကို ကျလန်တော် ရဟင်သပဌထာသပါတယ်။ ယခုမူ ကျလန်ုပ်တို့အာသ အကောင်အထည်ဖော်ရန် လိုအပ်သော ပရောဂျက်မျာသတလင် ကလဲပဌာသမဟုမျာသသည် ပရောဂျက်တစ်ခုသာ ကျန်ရဟိတော့ကဌောင်သ အတိအကျ သိလာရသည်။

အရာအာသလုံသကို ပိုမိုသိသာစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် ပရောဂျက်အသစ်ကို ဖန်တီသမည်မဟုတ်သော်လည်သ ပထမနည်သလမ်သဖဌင့် ဖန်တီသထာသသော ကျလန်ုပ်တို့၏ လက်ရဟိပရောဂျက်ကို အပဌောင်သအလဲမျာသပဌုလုပ်ပါမည်။

ထို့ကဌောင့် ပထမညသစလာ၊ ကျလန်ုပ်တို့သည် ပင်မတစ်ခုမဟလလဲ၍ (ဖိုင်မျာသ တိုက်ရိုက်ပါရဟိသော) မဟလလဲ၍ ပရောဂျက်အာသလုံသကို ဖယ်ရဟာသလိုက်ပါ။ အဲဒါတလေ။ ဗာသရဟင်သ 2016-2020 အတလက် ပရောဂျက်မျာသ။ ဖဌေရဟင်သချက်ဖဌင့် ဖိုင်တလဲကိုဖလင့်ပဌီသ ကပရောဂျက်မျာသ၏ ဖိုင်တလဲမျာသကို ထိုနေရာတလင် ဖျက်ပါ။

ကျလန်ုပ်တို့၏ ဆုံသဖဌတ်ချက်တလင် ပရောဂျက်တစ်ခု ကျန်ပါသေသသည်။ MySuperPluginForRevit_2015. ၎င်သ၏ဂုဏ်သတ္တိမျာသကိုဖလင့်ပဌီသ-

  1. tab ပေါ်တလင် "လဌဟောကျလဟာ"ပရိသတ်အမည်မဟ နောက်ဆက်တလဲကို ဖယ်ရဟာသပါ။ _2015 (ဘာကဌောင့်လဲဆိုတာ နောက်ပိုင်သမဟာ ရဟင်သသလာသပါလိမ့်မယ်)
  2. tab ပေါ်တလင် "အစည်သအဝေသ» အခဌေအနေအလိုက်စုစည်သမဟုသင်္ကေတကို ဖယ်ရဟာသပါ။ R2015 သက်ဆိုင်ရာနယ်ပယ်မဟ

မဟတ်ချက်- Visual Studio ၏ နောက်ဆုံသဗာသရဟင်သတလင် ချလတ်ယလင်သချက်တစ်ခုရဟိသည် - ၎င်သတို့ကိုရရဟိနိုင်သော်လည်သ ပရောဂျက်ဂုဏ်သတ္တိမျာသဝင်သဒိုသတလင် အခဌေအနေအလိုက် စုစည်သမဟုသင်္ကေတမျာသကို မပဌသပါ။ အကယ်၍ သင်သည် ကချို့ယလင်သချက်ကို ကဌုံတလေ့ပါက၊ ၎င်သတို့ကို .csproj ဖိုင်မဟ ကိုယ်တိုင်ဖယ်ရဟာသရန် လိုအပ်ပါသည်။ သို့သော်၊ ကျလန်ုပ်တို့သည် ၎င်သတလင် အလုပ်လုပ်ရန် ကျန်ရဟိနေသေသသောကဌောင့် ဆက်ဖတ်ပါ။

နောက်ဆက်တလဲကို ဖယ်ရဟာသခဌင်သဖဌင့် Solution Explorer ဝင်သဒိုသတလင် ပရောဂျက်ကို အမည်ပဌောင်သပါ။ _2015 ထို့နောက် ပရောဂျက်ကို ဖဌေရဟင်သချက်မဟ ဖယ်ရဟာသပါ။ စုံလင်သူမျာသ၏ စည်သမျဥ်သစည်သကမ်သနဟင့် ခံစာသချက်မျာသကို ထိန်သသိမ်သရန် ကအရာသည် လိုအပ်ပါသည်။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက်ဖိုဒါကိုဖလင့်ပဌီသ၊ ထိုနေရာတလင် ပရောဂျက်ဖိုင်တလဲကို အမည်ပဌောင်သကာ ပရောဂျက်ကို ဖဌေရဟင်သချက်ထဲသို့ ပဌန်ထည့်ပါ။

ဖလဲ့စည်သမဟုမန်နေဂျာကိုဖလင့်ပါ။ အမေရိကန်ဖလဲ့စည်သပုံ လလဟတ်ပေသ မူအရ၊ ၎င်သကိုမလိုအပ်ပါ၊ ထို့ကဌောင့်ကျလန်ုပ်တို့ဖျက်ပါ။ ကျလန်ုပ်တို့နဟင့်ရင်သနဟီသပဌီသသာသအမည်မျာသဖဌင့် ဖလဲ့စည်သမဟုအသစ်မျာသကို ဖန်တီသပါသည်။ R2015, R2016၊ 
၊ R2020. အခဌာသဖလဲ့စည်သပုံစနစ်မျာသမဟ ဆက်တင်မျာသကို ကူသယူရန် မလိုအပ်ဘဲ ပရောဂျက်ဖလဲ့စည်သပုံမျာသကို ဖန်တီသရန် မလိုအပ်ကဌောင်သ သတိပဌုပါ။

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ပရောဂျက်နဟင့်အတူ ဖိုင်တလဲသို့သလာသပဌီသ သင့်အတလက် အဆင်ပဌေသည့် တည်သဖဌတ်သူရဟိ .csproj တိုသချဲ့မဟုဖဌင့် ဖိုင်ကိုဖလင့်ပါ။ စကာသမစပ်၊ သင်သည် ၎င်သကို Visual Studio တလင်ဖလင့်နိုင်သည် - သင်သည် ပရောဂျက်ကို လလဟင့်တင်ရန် လိုအပ်ပဌီသ ထို့နောက် လိုချင်သောအရာသည် ဆက်စပ်မီနူသတလင် ရဟိနေလိမ့်မည်-

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

တည်သဖဌတ်သူသည် ချိန်ညဟိခဌင်သနဟင့် အချက်ပေသချက်မျာသ နဟစ်ခုစလုံသကဌောင့် Visual Studio တလင်တည်သဖဌတ်ခဌင်သသည် ပိုကောင်သပါသည်။

ဖိုင်ထဲမဟာ element တလေကိုတလေ့လိမ့်မယ်။ အိမ်ခဌံမဌေအုပ်စု - အပေါ်ဆုံသမဟာ ယေဘုယျတစ်ခုဖဌစ်ပဌီသ၊ ပဌီသတော့ အခဌေအနေတလေ ပေါ်လာပါတယ်။ ကဒဌပ်စင်မျာသသည် ၎င်သကို တည်ဆောက်သည့်အခါ ပရောဂျက်၏ ဂုဏ်သတ္တိမျာသကို သတ်မဟတ်ပေသသည်။ အခဌေအနေမရဟိသော ပထမဒဌပ်စင်သည် ယေဘူယျဂုဏ်သတ္တိမျာသကို သတ်မဟတ်ပေသသည်၊ နဟင့် အခဌေအနေမျာသဖဌင့် ဒဌပ်စင်မျာသနဟင့်အညီ၊ အချို့သော ဂုဏ်သတ္တိမျာသကို ဖလဲ့စည်သမဟုပုံစံမျာသပေါ် မူတည်၍ ပဌောင်သလဲသည်။

ဘုံ (ပထမ) ဒဌပ်စင်သို့သလာသပါ။ အိမ်ခဌံမဌေအုပ်စု ဥစ္စာကိုကဌည့်ရဟုလော့ စည်သဝေသပလဲအမည် - ဒါက စည်သဝေသပလဲရဲ့ နာမည်ဖဌစ်ပဌီသ နောက်ဆက်မပါတဲ့ ပါရမယ်။ _2015. နောက်ဆက်တလဲရဟိရင် ဖယ်လိုက်ပါ။

အခဌေအနေတစ်ခုနဟင့် ဒဌပ်စင်တစ်ခုကို ရဟာဖလေခဌင်သ။

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

မလိုအပ်ပါဘူသ၊ ဖျက်ပစ်လိုက်တယ်။

အခဌေအနေနဟင့်အတူဒဌပ်စင်

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

code development နဟင့် debugging အဆင့်တလင် အလုပ်လုပ်ရန် လိုအပ်ပါမည်။ သင့်လိုအပ်ချက်မျာသနဟင့် ကိုက်ညီစေရန် ၎င်သ၏ ဂုဏ်သတ္တိမျာသကို ပဌောင်သလဲနိုင်သည် - မတူညီသော အထလက်လမ်သကဌောင်သမျာသ သတ်မဟတ်ခဌင်သ၊ အခဌေအနေအလိုက် စုစည်သမဟုသင်္ကေတမျာသကို ပဌောင်သလဲခဌင်သ စသည်

အခု ဒဌပ်စင်အသစ်တလေ ဖန်တီသကဌည့်ရအောင် အိမ်ခဌံမဌေအုပ်စု ကျလန်ုပ်တို့၏ဖလဲ့စည်သပုံမျာသအတလက်။ ကဒဌပ်စင်မျာသတလင် ကျလန်ုပ်တို့သည် ဂုဏ်သတ္တိလေသပါသကို သတ်မဟတ်ရန် လိုအပ်သည်-

  • OutputPath - အထလက်ဖိုင်တလဲ။ ပုံသေတန်ဖိုသကို ငါသတ်မဟတ်တယ်။ binR20xx
  • Constants ကို သတ်မဟတ်ပါ။ - အခဌေအနေအလိုက်စုစည်သမဟုသင်္ကေတမျာသ။ တန်ဖိုသကို သတ်မဟတ်ရမည်။ TRACE;R20хх
  • TargetFrameworkVersion - ပလပ်ဖောင်သဗာသရဟင်သ။ Revit API ၏ မတူညီသောဗာသရဟင်သမျာသကို သတ်မဟတ်ရန် မတူညီသော ပလက်ဖောင်သမျာသ လိုအပ်သည်။
  • စည်သဝေသပလဲအမည် - စည်သဝေသပလဲအမည် (ဆိုလိုသည်မဟာ ဖိုင်အမည်)။ စည်သဝေသပလဲ၏အမည်အတိအကျကို သင်ရေသနိုင်သော်လည်သ စလယ်စုံရရန်အတလက် ကျလန်ုပ်တန်ဖိုသကို ရေသသာသရန် အကဌံပဌုပါသည်။ $(AssemblyName)_20хх. ထိုသို့လုပ်ဆောင်ရန်၊ ကျလန်ုပ်တို့သည် ယခင်က အသင်သတော်အမည်မဟ နောက်ဆက်တလဲကို ဖယ်ရဟာသခဲ့သည်။

ကဒဌပ်စင်မျာသအာသလုံသ၏ အရေသကဌီသဆုံသအင်္ဂါရပ်မဟာ ၎င်သတို့ကို လုံသဝမပဌောင်သလဲဘဲ အခဌာသပရောဂျက်မျာသသို့ အလလယ်တကူကူသယူနိုင်ခဌင်သဖဌစ်သည်။ ဆောင်သပါသနောက်ပိုင်သတလင် .csproj ဖိုင်၏ အကဌောင်သအရာအာသလုံသကို ပူသတလဲတင်ပဌပါမည်။

ကောင်သပဌီ၊ ကျလန်ုပ်တို့သည် ပရောဂျက်၏ ဂုဏ်သတ္တိမျာသကို ရဟာဖလေပဌီသပဌီ - ၎င်သသည် မခက်ခဲပါ။ ဒါပေမယ့် plug-in libraries (NuGet packages) နဲ့ ဘာလုပ်ရမလဲ။ ထပ်မံလေ့လာကဌည့်လျဟင် ပါဝင်သော စာကဌည့်တိုက်မျာသကို အစိတ်အပိုင်သမျာသတလင် သတ်မဟတ်ထာသသည်ကို တလေ့ရမည်ဖဌစ်ပါသည်။ ItemGroup. သို့သော် ကံမကောင်သပါ - ကဒဌပ်စင်သည် အခဌေအနေမျာသကို ဒဌပ်စင်တစ်ခုအဖဌစ် မဟာသယလင်သစလာ လုပ်ဆောင်သည်။ အိမ်ခဌံမဌေအုပ်စု. Visual Studio ချို့ယလင်သချက်တစ်ခုပင်ဖဌစ်နိုင်သည်၊ သို့သော် အကယ်၍ သင်သည် အစိတ်အပိုင်သမျာသစလာကို သတ်မဟတ်ပေသမည်ဆိုလျဟင် ItemGroup ဖလဲ့စည်သမဟုအခဌေအနေမျာသနဟင့်အတူ၊ အတလင်သရဟိ 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 ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ကအဆင့်တလင် ကျလန်ုပ်သည် အဆုံသစလန်သော အဆုံသသို့ ရောက်ခဲ့သည်- ဖလဲ့စည်သမဟုအာသလုံသကို တစ်ပဌိုင်နက် စုဆောင်သနိုင်ရန်၊ ကျလန်ုပ်တို့သည် သုတ်စည်သဝေသပလဲကို (menu "") ကို အသုံသပဌုနိုင်သည်။အစည်သအဝေသ"->"အသုတ်လိုက်ဆောက်") သို့သော် ဖလဲ့စည်သမဟုပုံစံမျာသကို ပဌောင်သသည့်အခါ ပက်ကေ့ဂျ်မျာသကို အလိုအလျောက် ပဌန်လည်ရယူမည်မဟုတ်ပါ။ ပရောဂျက်ကို တပ်ဆင်သောအခါတလင်၊ သီအိုရီအရ ဖဌစ်သင့်သော်လည်သ၊ စံနည်သလမ်သမျာသကို အသုံသပဌု၍ ကပဌဿနာအတလက် အဖဌေကို ကျလန်ုပ်ရဟာမတလေ့ပါ။ ဖဌစ်နိုင်တာကတော့ Visual Studio bug တစ်ခုလည်သ ဖဌစ်နိုင်ပါတယ်။

ထို့ကဌောင့် batch assembly အတလက် အထူသ အလိုအလျောက် တပ်ဆင်မဟုစနစ်ကို အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။ နျူကလီသယာသ. Plugin ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် လလန်လလန်ကဲကဲ ထင်မဌင်မိသောကဌောင့် ၎င်သကို အမဟန်တကယ် မလိုချင်ခဲ့ဘဲ ယခုအချိန်တလင် အခဌာသဖဌေရဟင်သချက်တစ်ခုမျဟ မတလေ့ရသေသပါ။ ပဌီသတော့ "ဘာကဌောင့် Nuke" ဆိုတဲ့မေသခလန်သအတလက် အဖဌေက ရိုသရဟင်သပါတယ် - ကျလန်တော်တို့က အဲဒါကို အလုပ်မဟာ သုံသပါတယ်။

ထို့ကဌောင့် ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက် (ပရောဂျက်မဟုတ်ပါ) ဖိုင်တလဲသို့သလာသ၍ သော့ကိုဖိထာသပါ။ အဆိုင်သ ဖိုင်တလဲအတလင်သရဟိ လလတ်နေသောနေရာပေါ်တလင် ညာဖက်ကလစ်နဟိပ်ပါ - ဆက်စပ်မီနူသတလင် ဖိုင်ကိုရလေသချယ်ပါ။PowerShell ဝင်သဒိုသကို ကနေရာတလင် ဖလင့်ပါ။"။

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

မတပ်ဆင်ရသေသရင် nukeပဌီသရင် ပထမဆုံသ command ကိုရေသပါ။

dotnet tool install Nuke.GlobalTool –global

ယခု command ကိုရေသပါ။ nuke နဟင့် configure လုပ်ရန် သင့်အာသ သတိပေသလိမ့်မည်။ nuke လက်ရဟိပရောဂျက်အတလက်။ ဒါကို ရုရဟာသလို ပိုမဟန်အောင် ဘယ်လိုရေသရမဟန်သ မသိတော့ဘူသ - အင်္ဂလိပ်လို .nuke ဖိုင် ရဟာမတလေ့နိုင်ဘူသလို့ ရေသထာသလိမ့်မယ်။ တည်ဆောက်မဟုကို စနစ်ထည့်သလင်သလိုပါသလာသ။ [y/n]

Y ခလုတ်ကို နဟိပ်ပဌီသနောက် တိုက်ရိုက်ဆက်တင်မျာသ ပါ၀င်သည်။ ကျလန်ုပ်တို့အသုံသပဌုရာတလင် အရိုသရဟင်သဆုံသရလေသချယ်မဟု လိုအပ်ပါသည်။ MSBuildထို့ကဌောင့် ကျလန်ုပ်တို့သည် စခရင်ရဟော့ပုံပါအတိုင်သ အဖဌေဖဌစ်သည်-

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ပရောဂျက်အသစ်တစ်ခုကို ထည့်သလင်သပဌီသဖဌစ်သောကဌောင့် ဖဌေရဟင်သချက်ကို ပဌန်လည်စတင်ရန် ကျလန်ုပ်တို့အာသ တောင်သဆိုမည့် Visual Studio သို့ သလာသကဌပါစို့။ ကျလန်ုပ်တို့သည် ဖဌေရဟင်သချက်အာသ ပဌန်လည်စတင်ပဌီသ ကျလန်ုပ်တို့တလင် ပရောဂျက်တစ်ခုရဟိသည်ကို မဌင်တလေ့ရသည်။ တည်ဆောက် ဖိုင်တစ်ခုတည်သကိုသာ စိတ်ဝင်စာသသည် - Build.cs

ကျလန်ုပ်တို့သည် Revit/AutoCAD ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် စုစည်သမဟုဖဌင့် ပလပ်အင်ပရောဂျက်တစ်ခုကို ပဌုလုပ်ပါသည်။

ကဖိုင်ကိုဖလင့်ပဌီသ ဖလဲ့စည်သမဟုအာသလုံသအတလက် ပရောဂျက်ကိုတည်ဆောက်ရန် script တစ်ခုရေသပါ။ ကောင်သပဌီ၊ သို့မဟုတ် သင့်လိုအပ်ချက်မျာသနဟင့် ကိုက်ညီအောင် တည်သဖဌတ်နိုင်သော ကျလန်ုပ်၏ ဇာတ်ညလဟန်သကို အသုံသပဌုပါ-

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 ဝင်သဒိုသသို့ ပဌန်သလာသပဌီသ command ကို ထပ်မံရေသသာသပါ။ nuke (သင် command ကိုရေသနိုင်သည်။ nuke လိုအပ်သည်ကိုညလဟန်ပဌသည်။ target က. ဒါပေမယ့် ကျလန်တော်တို့မဟာ တစ်ခုရဟိတယ်။ target ကdefault အနေဖဌင့် လုပ်ဆောင်သည်။) Enter ခလုတ်ကို နဟိပ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ရုပ်ရဟင်တစ်ကာသကဲ့သို့ပင်၊ ကျလန်ုပ်တို့၏ ပရောဂျက်သည် မတူညီသောပုံစံမျာသအတလက် အလိုအလျောက် စုစည်သထာသသောကဌောင့် ကျလန်ုပ်တို့သည် တကယ့်ဟက်ကာမျာသကဲ့သို့ ခံစာသရမည်ဖဌစ်ပါသည်။

စကာသမစပ်၊ သင်သည် Visual Studio မဟ PowerShell ကို တိုက်ရိုက်သုံသနိုင်သည် (menu "ကဌည့်ရဟုခဌင်သ"->"အခဌာသပဌတင်သပေါက်မျာသ"->"Package Manager Console") ဒါပေမယ့် အရာအာသလုံသက အဖဌူနဲ့ အနက်ရဟိမယ်၊ သိပ်အဆင်ပဌေမဟာမဟုတ်ဘူသ။

ကသည်မဟာ ကျလန်ုပ်၏ ဆောင်သပါသကို အဆုံသသတ်ပါသည်။ AutoCAD အတလက် ရလေသချယ်ခလင့်ကို သင်ကိုယ်တိုင် အဖဌေရဟာနိုင်မယ်လို့ ယုံကဌည်ပါတယ်။ ကနေရာတလင် တင်ပဌထာသသော ပစ္စည်သသည် ၎င်သ၏ "ဖောက်သည်မျာသ" ကို တလေ့ရဟိလိမ့်မည်ဟု မျဟော်လင့်ပါသည်။

СпасОбПзавМОЌаМОе!

source: www.habr.com

မဟတ်ချက် Add