Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Xa uphuhlisa iiplagi ze-CAD kwizicelo (kwimeko yam ezi zi-AutoCAD, i-Revit kunye neRenga) ekuhambeni kwexesha, enye ingxaki ibonakala - iinguqulelo ezintsha zeenkqubo zikhululwa, utshintsho lwabo lwe-API kunye neenguqu ezintsha zeeplagi kufuneka zenziwe.

Xa uneplagin enye kuphela okanye usengumqali ozifundisayo kulo mba, unokwenza ngokulula ikopi yeprojekthi, utshintshe iindawo eziyimfuneko kuyo kwaye uhlanganise inguqulelo entsha yeplagin. Ngokufanelekileyo, utshintsho olulandelayo kwikhowudi luya kubandakanya ukunyuka okuphindaphindiweyo kwiindleko zabasebenzi.

Njengoko ufumana amava kunye nolwazi, uya kufumana iindlela ezininzi zokwenza le nkqubo ngokuzenzekelayo. Ndiyihambile le ndlela kwaye ndifuna ukukuxelela into endigqibe ngayo kwaye ilula kangakanani.

Okokuqala, makhe sijonge indlela ecacileyo nendiyisebenzisileyo ixesha elide.

Amakhonkco kwiifayile zeprojekthi

Kwaye ukwenza yonke into ibe lula, ebonakalayo kwaye iyaqondakala, ndiya kuchaza yonke into usebenzisa umzekelo ongabonakaliyo wophuhliso lweplagin.

Masivule i-Visual Studio (ndinayo i-Community 2019 version. Kwaye ewe - ngesiRashiya) kwaye wenze isisombululo esitsha. Masimbize MySuperPluginForRevit

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Siza kwenza iplagin yeRevit yeenguqulelo zika-2015-2020. Ke ngoko, makhe senze iprojekthi entsha kwisisombululo (iThala leencwadi leKlasi yeSakhelo seNet) kwaye siyibize MySuperPluginForRevit_2015

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Kufuneka songeze amakhonkco kwi-Revit API. Ngokuqinisekileyo, singongeza izixhumanisi kwiifayile zendawo (kuya kufuneka sifake zonke ii-SDK eziyimfuneko okanye zonke iinguqulelo zeRevit), kodwa siya kulandela ngokukhawuleza indlela efanelekileyo kwaye sidibanise iphakheji ye-NuGet. Ungafumana iiphakheji ezimbalwa, kodwa ndiza kusebenzisa eyam.

Emva kokudibanisa ipakethe, cofa ekunene kwinto ethi "iimbekiselo"kwaye ukhethe into"Hambisa ipakethe.config kwiPackageReference...Β»

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Ukuba ngequbuliso ngeli xesha uqala ukothuka, kuba kwiphakheji yeepropathi zefestile akuyi kubakho nto ibalulekileyo "Khuphela ekuhlaleni", ngokuqinisekileyo kufuneka siyibeke kwixabiso amanga, ke ungoyiki - yiya kwifolda kunye neprojekthi, vula ifayile kunye .csproj ulwandiso kumhleli olungele wena (ndisebenzisa i-Notepad ++) kwaye ufumane ukungena malunga nephakheji yethu apho. Ukhangeleka ngolu hlobo ngoku:

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

Yongeza ipropati kuyo ixesha lokusebenza. Kuya kuvela ngolu hlobo:

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

Ngoku, xa usakha iprojekthi, iifayile ezivela kwiphakheji aziyi kukhutshelwa kwifolda yemveliso.
Masiqhubele phambili - masicinge ngokukhawuleza ukuba iplagin yethu iya kusebenzisa into evela kwiRevit API, etshintshileyo ngokuhamba kwexesha xa iinguqulelo ezintsha zikhutshiwe. Ewe, okanye sifuna nje ukutshintsha into ethile kwikhowudi ngokuxhomekeke kwinguqulo ye-Revit esenza ngayo iplagin. Ukusombulula loo mahluko kwikhowudi, siya kusebenzisa iisimboli zokuhlanganiswa ezinemiqathango. Vula iipropathi zeprojekthi, yiya kwi " tabNdibano"kwaye entsimini"Ubhalo loqulunqo olunemiqathango"masibhale R2015.

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Qaphela ukuba isimboli kufuneka yongezwe kuzo zombini iDebug kunye noKhupha ulungelelwaniso.

Ewe, ngelixa sikwifestile yeepropathi, ngokukhawuleza siya kwi " tabIsicelo"kwaye entsimini"indawo yamagama emiselweyoΒ» susa isimamva _2015ukuze indawo yethu yamagama ibe yindawo yonke kwaye izimele kwigama lendibano:

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Kwimeko yam, kwimveliso yokugqibela, iiplagi zazo zonke iinguqulelo zibekwe kwifolda enye, ngoko ke amagama am endibano ahlala nesimamva sefom. _20Ρ…Ρ…. Kodwa ungasisusa isimamva kwigama lendibano ukuba iifayile zimelwe ukuba zibekwe kwiincwadi ezahlukeneyo.

Masiye kwikhowudi yefayile Iklasi1.cs kwaye ulingise ikhowudi ethile apho, uthathele ingqalelo iinguqulelo ezahlukeneyo zeRevit:

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

Ngokukhawuleza ndaqwalasela zonke iinguqulelo zeRevit ngasentla inguqulo ye-2015 (eyayifumaneka ngexesha lokubhala) kwaye ngokukhawuleza ndaqwalasela ubukho beesimboli zokuhlanganiswa ezinemiqathango, ezenziwe kusetyenziswa itemplate efanayo.

Masiqhubele phambili kwimbalasane ephambili. Senza iprojekthi entsha kwisisombululo sethu, kuphela kwinguqu ye-plugin ye-Revit 2016. Siphinda onke amanyathelo achazwe ngasentla, ngokulandelanayo, ngokutshintsha inombolo ye-2015 kunye nenombolo 2016. Kodwa ifayile Iklasi1.cs cima kwiprojekthi entsha.

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Ifayile enekhowudi efunekayo - Iklasi1.cs - sele sinayo kwaye sifuna nje ukufaka ikhonkco kuyo kwiprojekthi entsha. Kukho iindlela ezimbini zokufaka amakhonkco:

  1. Inde Cofa ekunene kwiprojekthi kwaye ukhethe "YongezaΒ»->Β«Into ekhoyo", kwifestile evulayo, fumana ifayile efunekayo kwaye endaweni yokhetho "Yongeza" khetha ukhetho "Yongeza njengoqhagamshelwanoΒ»

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

  1. Mfutshane - ngokuthe ngqo kumhloli wesisombululo, khetha ifayile oyifunayo (okanye iifayile, okanye iifolda zonke) kwaye uyitsale kwiprojekthi entsha ngelixa ubambe isitshixo se-Alt. Njengoko utsala, uza kubona ukuba xa ucinezela isitshixo se Alt, isalathisi semouse sizakutshintsha ukusuka kuphawu oludibanisayo ukuya kutolo.
    IUPS: Ndenze ukubhideka okuncinci kulo mhlathi - ukuhambisa iifayile ezininzi kufuneka ubambe phantsi Shift + Alt!

Emva kokwenza inkqubo, siya kuba nefayile kwiprojekthi yesibini Iklasi1.cs ngophawu oluhambelanayo (utolo olubhlowu):

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Xa uhlela ikhowudi kwifestile yomhleli, unokukhetha kwakhona umxholo weprojekthi oza kubonisa ikhowudi kuyo, eya kukuvumela ukuba ubone ikhowudi ehlelwa phantsi kweesimboli zokudibanisa ezinemiqathango:

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Senza zonke ezinye iiprojekthi (2017-2020) usebenzisa le nkqubo. I-Hack yoBomi - ukuba utsala iifayile kwiSolution Explorer kungekhona kwiprojekthi yesiseko, kodwa kwiprojekthi apho sele ifakwe njengekhonkco, akufuneki ubambe isitshixo se-Alt!

Ukhetho oluchaziweyo lulungile kude kube ngumzuzu wokongeza inguqulelo entsha yeplagin okanye kude kube ngumzuzu wokongeza iifayile ezintsha kwiprojekthi - yonke le nto iba yindinisa kakhulu. Kwaye kutshanje ndiye ndaqaphela ngokukhawuleza indlela yokuyilungisa yonke iprojekthi enye kwaye siqhubela phambili kwindlela yesibini

Umlingo woqwalaselo

Wakuba ugqibile ukufunda apha, usenokudanduluka, β€œKutheni uchaze indlela yokuqala, ukuba inqaku ngoko nangoko limalunga neyesibini?!” Kwaye ndichaze yonke into ukuyenza icace gca ukuba kutheni sifuna iisimboli zokudibanisa ezinemiqathango kwaye zeziphi iindawo ezahluke ngazo iiprojekthi zethu. Kwaye ngoku kuya kucaca kuthi kanye ukuba yeyiphi na umahluko kwiiprojekthi ekufuneka siziphumeze, sishiya iprojekthi enye kuphela.

Kwaye ukwenza yonke into icace ngakumbi, asiyi kudala iprojekthi entsha, kodwa siya kwenza utshintsho kwiprojekthi yethu yangoku eyenziwe ngendlela yokuqala.

Ngoko, okokuqala, sisusa zonke iiprojekthi kwisisombululo ngaphandle kweyona nto iphambili (equlethe iifayile ngqo). Ezo. iiprojekthi zeenguqulelo 2016-2020. Vula ifolda ngesisombululo kwaye ucime iifolda zezi projekthi apho.

Sineprojekthi enye eseleyo kwisigqibo sethu - MySuperPluginForRevit_2015. Vula iipropati zayo kwaye:

  1. Kwithebhu "Isicelo"Susa isimamva kwigama lendibano _2015 (kuya kucaca ukuba kutheni kamva)
  2. Kwithebhu "NdibanoΒ» susa isimboli yoqulunqo olunemiqathango R2015 ukusuka kwintsimi ehambelanayo

Qaphela: uguqulelo lwamva nje lweVisual Studio inebug - iisimboli zoqulunqo olunemiqathango aziboniswanga kwipropathi yepropathi yeprojekthi, nangona zikhona. Ukuba ufumana le glitch, ngoko kufuneka uzisuse ngesandla kwifayile .csproj. Nangona kunjalo, kusafuneka sisebenze kuyo, ke qhubeka ufunda.

Yithiye kwakhona iprojekthi kwiSolution Explorer window ngokususa isimamva _2015 uze ususe iprojekthi kwisisombululo. Oku kuyimfuneko ukugcina ucwangco kunye neemvakalelo zabantu abathanda ukugqibelela! Sivula ifolda yesisombululo sethu, qamba kabusha ifolda yeprojekthi apho ngendlela efanayo kwaye ulayishe iprojekthi kwisisombululo.

Vula umphathi woqwalaselo. Uqwalaselo lwase-US khulula ngokomgaqo, akuyi kufuneka, ngoko siyayicima. Senza ulungelelwaniso olutsha ngamagama asele eqhelekile kuthi R2015, R2016,…, R2020. Qaphela ukuba awudingi ukukopa useto kolunye ulungelelwaniso kwaye awudingi ukwenza ubumbeko lweprojekthi:

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Yiya kwincwadi eneprojekthi kwaye uvule ifayile nge .csproj ulwandiso kumhleli olungele wena. Ngendlela, unokuyivula kwi-Visual Studio - kufuneka ukhuphe iprojekthi kwaye ke into oyifunayo iya kuba kwimenyu yomxholo:

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Ukuhlela kwi-Visual Studio kuyathandeka, kuba umhleli ulungelelanisa kunye nokukhuthaza.

Kwifayile siza kubona izinto PropertyGroup - phezulu kakhulu yinto eqhelekileyo, kwaye emva koko kuza iimeko. Ezi zinto ziseta iimpawu zeprojekthi xa yakhiwe. Isiqalelo sokuqala, esingenamiqathango, sibeka iipropati eziqhelekileyo, kunye nezinto ezineemeko, ngokufanelekileyo, zitshintshe ezinye iipropati ngokuxhomekeke kuqwalaselo.

Yiya kwinto eqhelekileyo (yokuqala). PropertyGroup kwaye ujonge kwipropathi AssemblyName – eli ligama lendibano kwaye kufuneka sibe nalo ngaphandle kwesimamva _2015. Ukuba kukho isimamva, yisuse.

Ukufumana into enemeko

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

Asiyifuni - siyayicima.

Into enemeko

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

iyakufuneka ukusebenza kwinqanaba lophuhliso lwekhowudi kunye nokulungiswa kweempazamo. Ungazitshintsha iipropathi zayo ukuze zihambelane neemfuno zakho-seta iindlela ezahlukeneyo zemveliso, tshintsha iisimboli zokuhlanganiswa ezinemiqathango, njl.

Ngoku makhe senze izinto ezintsha PropertyGroup kuqwalaselo lwethu. Kwezi zinto kufuneka simisele iipropati ezine:

  • Indlela yokuPhuma – ifolda yemveliso. Ndimisela ixabiso elimiselweyo binR20xx
  • DefineConstants - iisimboli zokuhlanganiswa ezinemiqathango. Ixabiso kufuneka lixelwe TRACE;R20Ρ…Ρ…
  • TargetFrameworkVersion -uguqulelo lweqonga. Iinguqulelo ezahlukeneyo zeRevit API zifuna amaqonga ahlukeneyo ukuba achazwe.
  • AssemblyName – igama lendibano (okt igama lefayile). Ungabhala igama elichanekileyo lendibano, kodwa ngenxa yezinto ezininzi ndincoma ukubhala ixabiso $(AssemblyName)_20Ρ…Ρ…. Ukwenza oku, sisuse ngaphambili isimamva kwigama lendibano

Eyona nto ibalulekileyo kuzo zonke ezi zinto kukuba zinokukhutshelwa kwezinye iiprojekthi ngaphandle kokuzitshintsha kwaphela. Kamva kwinqaku ndiya kuqhoboshela yonke imixholo yefayile .csproj.

Kulungile, sifumene iipropathi zeprojekthi - akukho nzima. Kodwa yintoni onokuyenza ngamathala eencwadi eplagi (iiphakheji zeNuGet). Ukuba sijonga ngokubhekele phaya, siya kubona ukuba amathala eencwadi aqukiweyo acacisiwe kwizinto ItemGroup. Kodwa ishwangusha - le nto iqhuba ngokungachanekanga iimeko njengento PropertyGroup. Mhlawumbi le yi-glitch ye-Visual Studio, kodwa ukuba ukhankanya izinto ezininzi ItemGroup ngeemeko zoqwalaselo, kwaye ufake amakhonkco ahlukeneyo kwiipakethe ze-NuGet ngaphakathi, ngoko xa utshintsha uqwalaselo, zonke iipakethe ezikhankanyiweyo ziqhagamshelwe kwiprojekthi.

Isiqalelo siza kusinceda khetha, esebenza ngokwengqiqo yethu yesiqhelo ukuba-emva koko.

Ukusebenzisa isiqalelo khetha, siseta iipakethe ezahlukeneyo ze-NuGet zoqwalaselo olwahlukileyo:

Yonke imixholo 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>

Nceda uqaphele ukuba kwenye yeemeko ndichaze ulungelelwaniso ezimbini nge OKANYE. Ngale ndlela ipakethe efunekayo iya kudityaniswa ngexesha loqwalaselo Ukuguqulwa.

Kwaye apha sinayo yonke into egqibeleleyo. Silayisha iprojekthi emva, yenza uqwalaselo esiludingayo, sibize into " kwimenyu yomxholo wesisombululo (hayi iprojekthi)Buyisela zonke iipakethe ze-NuGet"Kwaye siyabona ukuba iipakethi zethu zitshintsha njani.

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Kwaye ngeli nqanaba ndifike esiphelweni-ukuze ndiqokelele lonke uqwalaselo ngexesha elinye, sinokusebenzisa indibano yebhetshi (imenyu "NdibanoΒ»->Β«Ukwakhiwa kwebhetshi"), kodwa xa utshintsha ulungelelwaniso, iipakethe azibuyiselwa ngokuzenzekelayo. Kwaye xa uhlanganisa iprojekthi, oku akwenzeki, nangona, ngokwethiyori, kufanelekile. Andifumananga isisombululo kule ngxaki usebenzisa iindlela eziqhelekileyo. Kwaye kusenokwenzeka ukuba le ikwayibug yeVisual Studio.

Ngoko ke, kwindibano yebhetshi, kwagqitywa ekubeni kusetyenziswe inkqubo yokudibanisa ekhethekileyo ezenzekelayo Nuke. Ngenene khange ndiyifune le nto kuba ndicinga ukuba igqithile ngokwemigaqo yophuhliso lweplugin, kodwa okwangoku andiboni esinye isisombululo. Kwaye kumbuzo othi "Kutheni uNuke?" Impendulo ilula - siyisebenzisa emsebenzini.

Ke, yiya kwifolda yesisombululo sethu (hayi iprojekthi), ubambe isitshixo ukutshintsha kwaye nqakraza ekunene kwindawo engenanto kwifolda - kwimenyu yomxholo khetha into "Vula ifestile yePowerShell aphaΒ».

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Ukuba awunayo efakiweyo nuke, emva koko qala ubhale umyalelo

dotnet tool install Nuke.GlobalTool –global

Ngoku bhala umyalelo nuke kwaye uya kucelwa ukuba uqwalasele nuke yeprojekthi yangoku. Andazi ukuba ndingabhala njani oku ngokuchanekileyo kwisiRashiya - ngesiNgesi kuya kubhalwa Ayinakufumana .nuke ifayile. Ngaba uyafuna ukuseta ulwakhiwo? [y/n]

Cinezela iqhosha likaY kwaye emva koko kuya kubakho izinto zokuseta ngokuthe ngqo. Sifuna olona khetho lulula ukusebenzisa MSBuild, ngoko siphendula njengakumfanekiso wekhusi:

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Makhe siye kwi-Visual Studio, eya kusishukumisela ukuba siphinde silayishe isisombululo, kuba iprojekthi entsha yongezwa kuyo. Silayisha kwakhona isisombululo kwaye sibone ukuba sineprojekthi Ukwakha apho sinomdla kwifayile enye kuphela - Yakha.cs

Senza iprojekthi enye yeplagin kunye nokuhlanganiswa kweenguqulelo ezahlukeneyo zeRevit / AutoCAD

Vula le fayile kwaye ubhale umbhalo wokwakha iprojekthi yalo lonke uqwalaselo. Ewe, okanye sebenzisa iskripthi sam, onokuthi usihlele ukuze sihambelane neemfuno 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 kwifestile ye-PowerShell kwaye sibhale umyalelo kwakhona nuke (ungabhala umyalelo nuke ebonisa okufunekayo target. Kodwa sinayo enye target, esebenza ngokungagqibekanga). Emva kokucofa iqhosha le-Enter, siya kuziva njengabaduni bokwenyani, kuba, njengakwimuvi, iprojekthi yethu iya kuhlanganiswa ngokuzenzekelayo ukulungiselela uqwalaselo olwahlukileyo.

Ngendlela, ungasebenzisa iPowerShell ngokuthe ngqo kwiVisual Studio (imenyu "JongaΒ»->Β«Ezinye iifestileΒ»->Β«I-Package Manager Console"), kodwa yonke into iya kuba emnyama namhlophe, engafanelekanga kakhulu.

Oku kuqukumbela inqaku lam. Ndiqinisekile ukuba unokufumana inketho ye-AutoCAD ngokwakho. Ndiyathemba ukuba izinto ezichazwe apha ziya kufumana "iiklayenti" zayo.

Бпасиalu

umthombo: www.habr.com

Yongeza izimvo