Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Lapho uthuthukisa ama-plugin wezinhlelo zokusebenza ze-CAD (endabeni yami lezi yi-AutoCAD, i-Revit ne-Renga) ngokuhamba kwesikhathi, inkinga eyodwa ivela - izinguqulo ezintsha zezinhlelo zikhishwa, izinguquko zabo ze-API kanye nezinguqulo ezintsha zama-plugin zidinga ukwenziwa.

Uma une-plugin eyodwa kuphela noma usaqala ukuzifundisa kulolu daba, ungamane wenze ikhophi yephrojekthi, ushintshe izindawo ezidingekayo kuyo futhi uhlanganise inguqulo entsha ye-plugin. Ngokufanelekile, izinguquko ezilandelanayo zekhodi zizobandakanya ukukhuphuka okuningi kwezindleko zabasebenzi.

Njengoba uthola isipiliyoni nolwazi, uzothola izindlela ezimbalwa zokwenza le nqubo ngokuzenzakalelayo. Ngihambe le ndlela futhi ngifuna ukukutshela ukuthi ngigcine ngani nokuthi ilula kangakanani.

Okokuqala, ake sibheke indlela esobala futhi esengiyisebenzisile isikhathi eside.

Izixhumanisi zamafayela ephrojekthi

Futhi ukwenza yonke into ibe lula, ebonakalayo futhi eqondakalayo, ngizochaza yonke into ngisebenzisa isibonelo esingabonakali sokuthuthukiswa kwe-plugin.

Masivule i-Visual Studio (nginenguqulo Yomphakathi ka-2019. Futhi yebo - ngesiRashiya) futhi sakhe isisombululo esisha. Asimbize I-MySuperPluginForRevit

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Sizobe senza i-plugin ye-Revit yezinguqulo zika-2015-2020. Ngakho-ke, masidale iphrojekthi entsha kusixazululo (I-Net Framework Class Library) futhi siyibize I-MySuperPluginForRevit_2015

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Sidinga ukwengeza izixhumanisi ku-Revit API. Yiqiniso, singakwazi ukwengeza izixhumanisi kumafayela wendawo (sizodinga ukufaka wonke ama-SDK adingekayo noma zonke izinguqulo ze-Revit), kodwa sizolandela ngokushesha indlela efanele futhi sixhume iphakheji le-NuGet. Ungathola amaphakheji ambalwa, kodwa ngizosebenzisa awami.

Ngemva kokuxhuma iphakheji, chofoza kwesokudla entweni β€œizithenjwa"bese ukhetha into"Hambisa i-packages.config uye ku-PackageReference...Β»

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Uma kungazelelwe ngalesi sikhathi uqala ukwethuka, ngoba efasiteleni lezakhiwo zephakheji ngeke kube khona into ebalulekile "Kopisha endaweni", okudingeka nakanjani sikubeke enanini bamanga, bese ungethuki - hamba kufolda ngephrojekthi, vula ifayela ngesandiso .csproj kusihleli esilungele wena (ngisebenzisa i-Notepad++) futhi uthole okungenayo mayelana nephakheji yethu lapho. Usebukeka kanje manje:

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

Engeza indawo kuyo isikhathi sokusebenza. Kuzovela kanje:

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

Manje, lapho wakha iphrojekthi, amafayela asuka kuphakheji ngeke akopishelwe kufolda yokukhiphayo.
Masiqhubekele phambili - masicabange ngokushesha ukuthi i-plugin yethu izosebenzisa okuthile okuvela ku-Revit API, eshintshile ngokuhamba kwesikhathi lapho kukhishwa izinguqulo ezintsha. Hhayi-ke, noma sidinga nje ukushintsha okuthile kukhodi kuye ngenguqulo ye-Revit esenza ngayo i-plugin. Ukuze sixazulule umehluko onjalo kumakhodi, sizosebenzisa izimpawu zokuhlanganiswa ezinemibandela. Vula izakhiwo zephrojekthi, iya kokuthi β€œUmhlangano"futhi ensimini"Isaziso sokuhlanganiswa esinemibandela"asibhale R2015.

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Qaphela ukuthi uphawu kufanele lwengezwe kukho kokubili ukulungiselelwa kwe-Debug kanye noKhipha.

Nokho, ngenkathi sisefasiteleni lezakhiwo, ngokushesha siya kuthebhu ethi "Uhlelo lokusebenza"futhi ensimini"Indawo yamagama ezenzakalelayoΒ»susa isijobelelo _2015ukuze indawo yethu yamagama ibe yindawo yonke futhi izimele egameni lomhlangano:

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Endabeni yami, kumkhiqizo wokugcina, ama-plugin azo zonke izinguqulo afakwa kufolda eyodwa, ngakho amagama ami omhlangano ahlala nesijobelelo sefomu. _20kh. Kodwa ungakwazi futhi ukususa isijobelelo egameni lomhlangano uma amafayela kufanele abekwe kumafolda ahlukene.

Asiye kukhodi yefayela I-Class1.cs futhi ulingise ikhodi ethile lapho, ucabangela izinhlobo ezahlukene ze-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;
        }
    }
}

Ngokushesha ngacabangela zonke izinguqulo ze-Revit ngenhla yenguqulo 2015 (eyayitholakala ngesikhathi sokubhala) futhi ngokushesha ngacabangela ukuba khona kwezimpawu zokuhlanganiswa ezinemibandela, ezidalwe kusetshenziswa isifanekiso esifanayo.

Asiqhubekele entweni evelele kakhulu. Sakha iphrojekthi entsha kusixazululo sethu, kuphela inguqulo ye-plugin ye-Revit 2016. Siphinda zonke izinyathelo ezichazwe ngenhla, ngokulandelana, esikhundleni senombolo 2015 ngenombolo 2016. Kodwa ifayela I-Class1.cs susa kuphrojekthi entsha.

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Ifayela elinekhodi edingekayo - I-Class1.cs - sesivele sinayo futhi sidinga nje ukufaka isixhumanisi kuso kuphrojekthi entsha. Kunezindlela ezimbili zokufaka izixhumanisi:

  1. Yinde - chofoza kwesokudla kuphrojekthi bese ukhetha "EngezaΒ»->Β«Isici esikhona", efasiteleni elivulayo, thola ifayela elidingekayo futhi esikhundleni senketho "Engeza"khetha inketho"Engeza njengokuxhumanaΒ»

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

  1. Okufushane - ngokuqondile kusihloli sesixazululo, khetha ifayela olifunayo (noma amafayela, noma wonke amafolda) bese ulihudulela kuphrojekthi entsha ngenkathi ubambe ukhiye we-Alt. Njengoba uhudula, uzobona ukuthi uma ucindezela ukhiye we-Alt, ikhesa yegundane izoshintsha ukusuka kuphawu lokuhlanganisa ukuya kumcibisholo.
    I-UPS: Ngenze ukudideka okuncane kulesi sigaba - ukudlulisa amafayela amaningana kufanele uwabambe Shift + Alt!

Ngemva kokwenza inqubo, sizoba nefayela kuphrojekthi yesibili I-Class1.cs ngesithonjana esihambisanayo (umcibisholo oluhlaza okwesibhakabhaka):

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Lapho uhlela ikhodi efasiteleni lomhleli, ungaphinda ukhethe ukuthi yimuphi umongo wephrojekthi ongabonisa kuwo ikhodi, okuzokuvumela ukuthi ubone ikhodi ehlelwa ngaphansi kwezimpawu ezihlukene zokuhlanganisa ezinemibandela:

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Sakha wonke amanye amaphrojekthi (2017-2020) sisebenzisa lolu hlelo. I-Life Hack - uma uhudula amafayela ku-Solution Explorer hhayi kuphrojekthi eyisisekelo, kodwa kusukela kuphrojekthi lapho asevele efakwe khona njengesixhumanisi, awudingi ukubamba ukhiye we-Alt!

Inketho echaziwe yinhle impela kuze kube umzuzu wokwengeza inguqulo entsha ye-plugin noma kuze kube umzuzu wokwengeza amafayela amasha kuphrojekthi - konke lokhu kuba nzima kakhulu. Futhi muva nje ngivele ngaqaphela ukuthi ngingayixazulula kanjani yonke iphrojekthi eyodwa futhi siqhubekela endleleni yesibili

Umlingo wokucupha

Lapho usuqedile ukufunda lapha, ungase uthi, β€œKungani uchaze indlela yokuqala, uma isihloko simayelana nesesibili ngokushesha?!” Futhi ngichaze yonke into ukuze kucace ukuthi kungani sidinga izimpawu zokuhlanganisa ezinemibandela nokuthi iziphi izindawo amaphrojekthi ethu ahluka kuzo. Futhi manje kuyasicacela ukuthi imuphi umehluko kumaphrojekthi okudingeka siwenze, kushiye iphrojekthi eyodwa kuphela.

Futhi ukwenza yonke into ibonakale kakhudlwana, ngeke sidale iphrojekthi entsha, kodwa sizokwenza izinguquko kuphrojekthi yethu yamanje eyakhiwe ngendlela yokuqala.

Ngakho-ke, okokuqala, sisusa wonke amaphrojekthi esixazululweni ngaphandle kweyinhloko (equkethe amafayela ngokuqondile). Labo. amaphrojekthi ezinguqulo 2016-2020. Vula ifolda enesixazululo bese ususa amafolda alawa maphrojekthi lapho.

Sinephrojekthi eyodwa esele esinqumweni sethu - I-MySuperPluginForRevit_2015. Vula izakhiwo zayo futhi:

  1. Kuthebhu ethi β€œUhlelo lokusebenza"susa isijobelelo egameni lomhlangano _2015 (kuzocaca ukuthi kungani kamuva)
  2. Kuthebhu ethi β€œUmhlanganoΒ»susa uphawu lokuhlanganisa olunemibandela R2015 kusukela kunkambu ehambisanayo

Qaphela: inguqulo yakamuva ye-Visual Studio inesiphazamiso - izimpawu zokuhlanganiswa ezinemibandela aziboniswa efasiteleni lezakhiwo zephrojekthi, nakuba zikhona. Uma uhlangabezana nale nkinga, kuzomele uzisuse mathupha kufayela elithi .csproj. Nokho, kusafanele sisebenze kukho, ngakho qhubeka ufunda.

Qamba kabusha iphrojekthi efasiteleni le-Solution Explorer ngokukhipha isijobelelo _2015 bese ususa iphrojekthi esixazululweni. Lokhu kuyadingeka ukuze kugcinwe ukuhleleka nemizwa yabafuna ukuphelela! Sivula ifolda yesisombululo sethu, siqambe kabusha ifolda yephrojekthi lapho ngendlela efanayo bese silayisha iphrojekthi emuva kusixazululo.

Vula isiphathi sokucushwa. Ukucushwa kwe-US release empeleni, ngeke kudingeke, ngakho siyayisusa. Sakha ukucupha okusha ngamagama esiwajwayele kakade R2015, R2016,…, R2020. Qaphela ukuthi awudingi ukukopisha izilungiselelo kusuka kokunye ukucushwa futhi awudingi ukudala ukucushwa kwephrojekthi:

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Yiya kufolda enephrojekthi bese uvule ifayela ngesandiso se-.csproj kusihleli esilungele wena. Ngendlela, ungayivula ku-Visual Studio - udinga ukukhulula iphrojekthi bese into oyifunayo izoba kumenyu yokuqukethwe:

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Ukuhlela ku-Visual Studio kungcono nakakhulu, ngoba umhleli uqondanisa futhi uyala.

Efayelini sizobona izakhi PropertyGroup - phezulu kakhulu kukhona jikelele, bese kuba nemibandela. Lezi zakhi zibeka izakhiwo zephrojekthi lapho yakhiwe. Isici sokuqala, esingenamibandela, sibeka izakhiwo ezijwayelekile, kanye nezakhi ezinemibandela, ngokufanele, zishintsha ezinye izakhiwo kuye ngokucushwa.

Iya kusici esivamile (sokuqala). PropertyGroup futhi ubheke impahla AssemblyName – leli yigama lomhlangano futhi kufanele sibe nalo ngaphandle kwesijobelelo _2015. Uma kunesijobelelo, susa.

Ukuthola i-elementi enesimo

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

Asiyidingi - siyayisusa.

Isici esinesimo

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

kuzodingeka ukusebenza esigabeni sokuthuthukiswa kwekhodi nokulungisa iphutha. Ungashintsha izakhiwo zayo ukuze zivumelane nezidingo zakho - setha izindlela ezihlukene zokuphuma, shintsha izimpawu zokuhlanganisa ezinemibandela, njll.

Manje ake sakhe izakhi ezintsha PropertyGroup ngokulungiselelwa kwethu. Kulezi zici sidinga nje ukusetha izakhiwo ezine:

  • I-OutputPath – ifolda yokuphumayo. Ngibeka inani elizenzakalelayo ibe R20xx
  • DefineConstants – izimpawu zokuhlanganisa ezinemibandela. Inani kufanele licaciswe I-TRACE;R20Ρ…Ρ…
  • TargetFrameworkVersion - inguqulo yesikhulumi. Izinguqulo ezihlukene ze-Revit API zidinga izinkundla ezihlukene ukuthi zicaciswe.
  • AssemblyName - igama lomhlangano (okungukuthi igama lefayela). Ungabhala igama eliqondile lomhlangano, kodwa ngenxa yokuguquguquka ngincoma ukubhala inani $(AssemblyName)_20Ρ…Ρ…. Ukwenza lokhu, sisuse ngaphambilini isijobelelo egameni lomhlangano

Isici esibaluleke kakhulu kuzo zonke lezi zici ukuthi zingakopishelwa kwamanye amaphrojekthi ngaphandle kokuwashintsha nhlobo. Kamuva esihlokweni ngizonamathisela konke okuqukethwe kwefayela elithi .csproj.

Kulungile, sithole izakhiwo zephrojekthi - akunzima. Kodwa yini okufanele uyenze ngemitapo yolwazi ye-plug-in (amaphakheji we-NuGet). Uma sibheka ngokuqhubekayo, sizobona ukuthi imitapo yolwazi efakiwe icaciswe kuzakhi ItemGroup. Kodwa ishwa - lesi sici sicubungula ngokungalungile izimo njengento PropertyGroup. Mhlawumbe lokhu kuyiphutha le-Visual Studio, kodwa uma ucacisa izakhi ezimbalwa ItemGroup ngezimo zokucushwa, bese ufaka izixhumanisi ezihlukene kumaphakheji we-NuGet ngaphakathi, khona-ke lapho ushintsha ukucushwa, wonke amaphakheji acacisiwe axhunywe kuphrojekthi.

Isici siyasisiza Khetha, esebenza ngokuvumelana nengqondo yethu evamile uma-ke-okunye.

Ukusebenzisa i-elementi Khetha, sibeka amaphakheji e-NuGet ahlukene okulungiselelwa okuhlukile:

Konke okuqukethwe 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>

Sicela uqaphele ukuthi komunye wemibandela ngibalule ukucupha okubili nge NOMA. Ngale ndlela iphakheji edingekayo izoxhunywa ngesikhathi sokucushwa Ukuhlukumeza.

Futhi lapha sinakho cishe yonke into ephelele. Silayisha iphrojekthi emuva, sivumela ukucushwa esikudingayo, shayela into " kumenyu yokuqukethwe yesixazululo (hhayi iphrojekthi)Buyisela wonke amaphakheji we-NuGet"futhi siyabona ukuthi amaphakheji ethu ashintsha kanjani.

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Futhi kulesi sigaba ngifinyelele ekugcineni - ukuze ngiqoqe konke ukulungiselelwa ngesikhathi esisodwa, singasebenzisa i-batch assembly (imenyu "UmhlanganoΒ»->Β«Ukwakhiwa kweqoqo"), kodwa lapho ushintsha izilungiselelo, amaphakheji awabuyiselwa ngokuzenzakalelayo. Futhi lapho uhlanganisa iphrojekthi, lokhu futhi akwenzeki, nakuba, ngokombono, kufanele. Angikasitholi isisombululo sale nkinga ngokusebenzisa izindlela ezijwayelekile. Futhi kungenzeka ukuthi lokhu futhi kuyisiphazamisi se-Visual Studio.

Ngakho-ke, ukuhlanganiswa kwe-batch, kwanqunywa ukusebenzisa uhlelo olukhethekile lokuhlanganisa oluzenzakalelayo Nuke. Empeleni angizange ngikufune lokhu ngoba ngicabanga ukuthi kugcwele ngokweqile mayelana nokuthuthukiswa kwe-plugin, kodwa okwamanje angisiboni esinye isisombululo. Futhi embuzweni othi "Kungani Nuke?" Impendulo ilula - siyisebenzisa emsebenzini.

Ngakho-ke, hamba kufolda yesixazululo sethu (hhayi iphrojekthi), ubambe ukhiye Shift bese uchofoza kwesokudla endaweni engenalutho kufolda - kumenyu yokuqukethwe khetha into "Vula iwindi le-PowerShell lapha".

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Uma ungenayo efakiwe nuke, bese uqala ubhala umyalo

dotnet tool install Nuke.GlobalTool –global

Manje bhala umyalo nuke futhi uzocelwa ukuthi ulungise nuke kuphrojekthi yamanje. Angazi ukuthi ngingakubhala kanjani lokhu kahle kakhulu ngesi-Russian - ngesiNgisi kuzobhalwa Ayikwazanga ukuthola ifayela le-.nuke. Ingabe ufuna ukumisa isakhiwo? [y/n]

Cindezela ukhiye ongu-Y bese kuzoba nezinto zezilungiselelo eziqondile. Sidinga inketho elula ukusebenzisa I-MSBuild, ngakho-ke siphendula njengasesithombeni-skrini:

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Ake siye ku-Visual Studio, ezosishukumisela ukuba silayishe kabusha isisombululo, njengoba iphrojekthi entsha yengezwe kuyo. Silayisha kabusha isixazululo futhi siyabona ukuthi sinephrojekthi ukwakha lapho sinentshisekelo yefayela elilodwa kuphela - Build.cs

Senza iphrojekthi eyodwa ye-plugin ngokuhlanganisa izinguqulo ezahlukene ze-Revit/AutoCAD

Vula leli fayela bese ubhala umbhalo ukuze wakhe iphrojekthi yakho konke ukulungiselelwa. Hhayi-ke, noma sebenzisa umbhalo wami, ongakwazi ukuwuhlela ukuze uvumelane nezidingo zakho:

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"));
            }
        });
}

Sibuyela efasiteleni le-PowerShell bese sibhala umyalo futhi nuke (ungabhala umyalo nuke ekhombisa okudingekayo Target. Kodwa sinayo eyodwa Target, esebenza ngokuzenzakalelayo). Ngemva kokucindezela ukhiye we-Enter, sizozizwa njengabaduni bangempela, ngoba, njengaku-movie, iphrojekthi yethu izoqoqwa ngokuzenzakalelayo ukuze kulungiselelwe okuhlukile.

Ngendlela, ungasebenzisa i-PowerShell ngqo kusuka ku-Visual Studio (imenyu "bukaΒ»->Β«Amanye amawindiΒ»->Β«Ikhonsoli Yomphathi Wephakheji"), kodwa konke kuzoba kumnyama nokumhlophe, okungelula kakhulu.

Lokhu kuphetha isihloko sami. Ngiyaqiniseka ukuthi ungakwazi ukuthola inketho ye-AutoCAD ngokwakho. Ngithemba ukuthi izinto ezivezwe lapha zizowathola β€œamaklayenti” awo.

Бпасибо за вниманиС!

Source: www.habr.com

Engeza amazwana