Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Markaad horumarinayso plugins ee codsiyada CAD (xaaladdeyda Kuwani waa AutoCAD, Revit iyo Renga) waqti ka dib, hal dhibaato ayaa soo ifbaxa - noocyo cusub oo barnaamijyo ah ayaa la sii daayaa, isbeddelkooda API iyo noocyo cusub oo plugins ah ayaa loo baahan yahay in la sameeyo.

Markaad haysato hal plugin oo keliya ama aad weli tahay bilawga is-baray ee arrintan ku saabsan, waxaad si fudud u samayn kartaa nuqul ka mid ah mashruuca, beddel meelaha lagama maarmaanka ah ee ku jira oo aad soo ururiso nooc cusub oo plugin ah. Sidaas awgeed, isbeddellada xiga ee koodka ayaa keeni doona koror badan oo kharashka shaqada ah.

Markaad hesho waayo-aragnimo iyo aqoon, waxaad heli doontaa dhowr siyaabood oo aad habkan otomaatig ugu noqon karto. Waddadan ayaan maray oo aan rabaa in aan kuu sheego waxa aan ku dambeeyay iyo sida ay ugu habboon tahay.

Marka hore, aan eegno hab muuqda oo aan muddo dheer isticmaalayey.

Xiriirinta faylasha mashruuca

Iyo in la sameeyo wax kasta oo fudud, muuqaal ah oo la fahmi karo, waxaan ku tilmaami doonaa wax kasta aniga oo isticmaalaya tusaale aan la taaban karin ee horumarinta plugin.

Aan furno Visual Studio (Waxaan haystaa nooca Community 2019. Iyo haa - af Ruush) oo aan abuurno xal cusub. Aan u yeerno MySuperPluginForRevit

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Waxaan u samayn doonaa plugin Revit ee noocyada 2015-2020. Sidaa darteed, aynu abuurno mashruuc cusub oo xalka ah (Maktabadda Fasalka Qaab-dhismeedka Net) oo wac MySuperPluginForRevit_2015

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Waxaan u baahanahay inaan ku darno xiriirinta Revit API Dabcan, waxaan ku dari karnaa isku xirka faylasha maxaliga ah (waxaan u baahan doonaa inaan ku rakibno dhammaan SDK-yada lagama maarmaanka ah ama dhammaan noocyada Revit), laakiin waxaan isla markiiba raaci doonaa waddada saxda ah oo aan isku xirno xirmada NuGet. Waxaad ka heli kartaa dhowr baakadood, laakiin anigu waxaan isticmaali doonaa kayga.

Kadib xidhidhiyaha xirmada, midig-guji shayga"tixraacyada"oo door shayga"U rar packs.config una wareeji XidhmadaTixraaca...Β»

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Haddii si lama filaan ah xilligan aad bilowdo inaad argagaxdo, sababtoo ah daaqada guryaha xirmada ma jiri doonto shay muhiim ah "Ku koobbi gudaha", taas oo aan xaqiiqdii u baahanahay inaan dejino qiimaha been ah, ka dibna ha argagixin - u tag faylka mashruuca leh, ku fur faylka .csproj kordhinta ee tifaftiraha adiga kugu habboon (waxaan isticmaalaa Notepad ++) oo ka hel gelitaanka xirmadayada halkaas. Hadda waxay u egtahay sidan:

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

Ku dar hanti runtime. Waxay noqon doontaa sidatan:

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

Hadda, marka mashruuca la dhisayo, faylasha xirmada laguma koobiyn doono galka wax soo saarka.
Aynu sii socono - aynu isla markiiba qiyaasno in pluginkeenu uu isticmaali doono wax ka yimid Revit API, kaas oo isbeddelay waqti ka dib markii noocyo cusub la sii daayay. Hagaag, ama waxaan kaliya u baahanahay inaan wax ka bedelno koodka iyadoo kuxiran nooca Revit kaas oo aan u sameyneyno plugin. Si loo xalliyo kala duwanaanshaha noocaan ah ee koodka, waxaan isticmaali doonaa calaamado ururin shuruudaysan. Fur guryaha mashruuca, tag " tabGolaha"iyo berrinka"Qoraal shuruudaysan"aan qorno R2015.

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Ogsoonow in calaamada lagu daro isku xidhka Debug iyo Siidaynta labadaba.

Waa hagaag, inta aan ku jirno daaqada guryaha, waxaan isla markiiba tagnaa " tabCodsiga"iyo berrinka"Meesha magaca caadiga ahΒ» ka saar daba-galka _2015si magaceenu u noqdo mid caalami ah oo ka madax banaan magaca golaha:

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Xaaladdayda, badeecada ugu dambeysa, fiilooyinka dhammaan noocyada waxaa lagu dhejiyaa hal gal, markaa magacyada golahaygu waxay ku sii jiraan lifaaqa foomka _20Ρ…Ρ…. Laakiin sidoo kale waxaad ka saari kartaa daba-galka magaca golaha haddii faylalka loo malaynayo inay ku yaalliin faylal kala duwan.

Aan tagno koodka faylka Fasalka 1.cs oo ku ekaysii kood ka mid ah halkaas, adiga oo tixgelinaya noocyada kala duwan ee 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;
        }
    }
}

Waxaan isla markiiba tixgeliyey dhammaan noocyada Revit ee ka sarreeya nooca 2015 (kuwaas oo la heli karo wakhtiga qorista) isla markiiba waxaan tixgeliyey joogitaanka calaamadaha isku-darka shuruudaha, kuwaas oo la abuuray iyadoo la adeegsanayo isla template.

Aan u gudubno nuxurka ugu muhiimsan. Waxaan abuurnaa mashruuc cusub oo xalkeena ah, kaliya nooca plugin ee Revit 2016. Waxaan ku celineynaa dhammaan tallaabooyinka kor lagu sharaxay, siday u kala horreeyaan, beddelka lambarka 2015 lambarka 2016. Laakiin faylka Fasalka 1.cs ka tirtir mashruuca cusub.

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Fayl gareeya koodka loo baahan yahay - Fasalka 1.cs - Horay ayaanu u haysanay oo waxaan u baahanahay oo kaliya in aan galino xiriiriye mashruuc cusub. Waxaa jira laba siyaabood oo lagu gelin karo xiriiriyeyaasha:

  1. Dheer - midig-guji mashruuca oo dooro "AddΒ»->Β«Curiyaha jira", daaqada furan, ka hel faylka loo baahan yahay iyo halkii ikhtiyaarka ah"Add"dooro ikhtiyaarka"Kudar sida isku xidhkaΒ»

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

  1. Gaaban - si toos ah sahamiyaha xalka, dooro faylka la rabo (ama xitaa faylalka, ama xitaa faylalka oo dhan) oo u jiid mashruuc cusub adigoo hoos u dhigaya furaha Alt. Markaad jiidato, waxaad arki doontaa marka aad riixdo furaha Alt, cursorka mouse-ku wuxuu ka bedeli doonaa calaamada lagu daray oo uu noqon doono falaar.
    UPS: Waxa aan ku sameeyay jahawareer yar cutubkan - si aad u wareejiso faylal badan waa inaad hoos u dhigtaa Wareejinta + Alt!

Kadib fulinta nidaamka, waxaan ku yeelan doonaa fayl mashruuca labaad Fasalka 1.cs leh astaanta u dhiganta ( falaarta buluuga ah):

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Markaad tafatirayso koodka daaqada tafatiraha, waxaad sidoo kale dooran kartaa macnaha mashruuca si aad u muujiso koodka, kaas oo kuu ogolaanaya inaad aragto koodka oo lagu tafatiray calaamado shuruudo ah oo kala duwan:

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Waxaan abuurnaa dhammaan mashaariicda kale (2017-2020) anagoo adeegsanayna nidaamkan. Hack Life - haddii aad ku jiidato faylasha Solution Explorer ma aha mashruuca aasaasiga ah, laakiin ka soo jeeda mashruuca halkaas oo ay horayba ugu dhejiyeen isku xirka, markaa uma baahnid inaad hoos u dhigto furaha Alt!

Xulashada la sharraxay waa mid aad u wanaagsan ilaa waqtiga lagu daro nooc cusub oo plugin ah ama ilaa waqtiga lagu daro faylal cusub mashruuca - waxaas oo dhan waxay noqotaa mid aad u caajis badan. Dhawaan waxaan si lama filaan ah u ogaaday sida loo xalliyo dhammaan hal mashruuc oo aan u gudubno habka labaad

Sixirka habaynta

Markaad akhrido halkan, waxaad ku dhawaaqi kartaa, "Maxaad u qeexday habka koowaad, haddii maqaalku isla markiiba ku saabsan yahay labaad?!" Oo waxaan u sharaxay wax walba si aan u caddeeyo sababta aan ugu baahanahay calaamado isku-dubarid shuruudaysan iyo meelaha ay ku kala duwan yihiin mashaariicdayadu. Oo hadda waxaa noo cadaatay sida saxda ah ee ay ku kala duwan yihiin mashaariicda aan u baahannahay inaan fulino, oo aan ka tagno hal mashruuc.

Iyo in wax walba la caddeeyo, ma abuuri doono mashruuc cusub, laakiin waxaan ku samayn doonaa isbeddel mashruuceena hadda loo abuuray habka ugu horreeya.

Marka, marka hore, waxaan ka saareynaa dhammaan mashaariicda xalka marka laga reebo midka ugu weyn (oo ay ku jiraan faylasha si toos ah). Kuwaas. mashaariicda noocyada 2016-2020. Fur faylka xalka oo tirtir galka mashaariicdan halkaas.

Waxa noo hadhay hal mashruuc oo go'aankeena ah - MySuperPluginForRevit_2015. Fur hantideeda oo:

  1. Dhinaca tabka "Codsiga"ka saar lifaaqa magaca golaha _2015 (Waa ay caddahay sababta hadhow)
  2. Dhinaca tabka "GolahaΒ» ka saar summada isku-duwidda shuruudda ah R2015 laga bilaabo goobta u dhiganta

Fiiro gaar ah: Nuqulkii ugu dambeeyay ee Visual Studio wuxuu leeyahay cilad - calaamado isku-dubarid shuruudaysan ayaan lagu soo bandhigin daaqada guryaha mashruuca, in kasta oo la heli karo. Haddii aad la kulanto ciladkan, markaa waxaad u baahan tahay inaad gacanta ka saarto faylka .csproj. Si kastaba ha ahaatee, weli waa inaan ka shaqeynaa, markaa sii akhri.

Magaca dib ugu magacaw mashruuca daaqada Solution Explorer adiga oo meesha ka saaraya lifaaqa _2015 ka dibna ka saar mashruuca xalka. Tani waxay lagama maarmaan u tahay in la ilaaliyo nidaamka iyo dareenka kaamilnimada! Waxaan furnaa galka xalkeena, waxaan u magacownaa galka mashruuca halkaas si la mid ah waxaanan ku soo celineynaa mashruuca xalka.

Fur maamulaha qaabeynta qaabeynta US Release mabda' ahaan, looma baahnaan doono, markaa waanu tirtirnaa. Waxaan abuurnaa habayn cusub oo leh magacyo horeba naloo yaqaan R2015, R2016,…, R2020. Ogsoonow inaadan u baahnayn inaad nuqul ka sameyso dejinta qaabeynta kale oo aadan u baahnayn inaad abuurto qaabaynta mashruuca:

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Tag galka mashruuca oo ku fur feylka kordhinta .csproj ee tafatiraha kugu habboon. Jid ahaan, waxaad sidoo kale ku furi kartaa Visual Studio - waxaad u baahan tahay inaad soo dejiso mashruuca ka dibna shayga la rabo wuxuu ku jiri doonaa liiska macnaha guud:

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Tafatirka Visual Studio waa xitaa la doorbidi karo, maadaama tifaftiruhu labaduba isku toosiyaan oo ay soo jeediyaan.

Faylka waxaan ku arki doonaa walxaha Kooxda Hantida - Xagga ugu sarreeya waa kan guud, ka dibna waxaa yimaada shuruudaha. Qodobadani waxay dejiyaan sifooyinka mashruuca marka la dhisayo. Cunsurka ugu horreeya, kaas oo aan lahayn shuruudo, wuxuu dejiyaa sifooyinka guud, iyo walxaha leh shuruudo, si waafaqsan, beddelka guryaha qaarkood iyadoo ku xiran qaabeynta.

Tag qaybta guud (koowaad). Kooxda Hantida oo eeg hantida Magaca Golaha – Kani waa magaca golaha, waana in aan haysanaa iyada oo aan wax ku dhejis ah lahayn _2015. Haddii ay jirto daba-gal, ka dibna ka saar.

Helitaanka curiye leh xaalad

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

Uma baahnin - waanu tirtirnaa.

Curiye leh xaalad

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

loo baahan doonaa si ay u shaqeeyaan marxaladda horumarinta code iyo qaladka. Waxaad bedeli kartaa hantideeda si ay ugu habboonaato baahiyahaaga - deji waddooyin wax-soo-saar oo kala duwan, beddel calaamado ururin shuruudaysan, iwm.

Hadda aan abuurno walxo cusub Kooxda Hantida habayntayada. Cunsuradan waxaan u baahanahay inaan dejino afar guri:

  • Waddada Output - folder wax soo saarka. Waxaan dhigay qiimaha caadiga ah binR20xx
  • QeexiConstant - calaamado ururin shuruudaysan. Qiimaha waa in la cayimaa RAAD;R20Ρ…Ρ…
  • TargetFrameworkVersion - nooca madal. Noocyada kala duwan ee Revit API waxay u baahan yihiin meelo kala duwan in la cayimo.
  • Magaca Golaha - magaca shirka (sida magaca faylka). Waxaad qori kartaa magaca saxda ah ee shirka, laakiin kala duwanaanshaha waxaan ku talinayaa in la qoro qiimaha $(AssemblyName)_20Ρ…Ρ…. Si tan loo sameeyo, waxaan hore uga saarnay daba-galka magaca golaha

Tilmaamaha ugu muhiimsan ee dhammaan walxahan ayaa ah in si fudud loogu koobi karo mashaariicda kale iyada oo aan la beddelin gabi ahaanba. Mar dambe maqaalka waxaan ku soo lifaaqi doonaa dhammaan waxa ku jira faylka .csproj.

Hagaag, waxaan ogaanay sifooyinka mashruuca - ma ahan wax adag. Laakiin waxa lagu sameeyo maktabadaha plug-in (NuGet packs). Haddii aan sii eegno, waxaynu arki doonaa in maktabadaha ku jira ay ku qeexan yihiin curiyeyaasha ItemGroup. Laakiin nasiib xumo - curiyahani wuxuu si khaldan u socodsiiyaa shuruudaha sida curiye Kooxda Hantida. Waxaa laga yaabaa in tani xitaa tahay cillad Visual Studio, laakiin haddii aad caddeyso dhowr walxood ItemGroup oo leh shuruudaha qaabeynta, oo geli xiriiryo kala duwan xirmooyinka NuGet gudaha, ka dib markaad bedesho qaabeynta, dhammaan baakadaha la cayimay waxay ku xiran yihiin mashruuca.

Cunsurka ayaa noo yimaada gargaar Dooro, kaas oo u shaqeeya si waafaqsan caqli-galkeena caadiga ah haddii-markaa-kale.

Isticmaalka element Dooro, Waxaan u dejinay xirmo NuGet kala duwan oo loogu talagalay qaabeynta kala duwan:

Dhammaan waxa ku jira 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>

Fadlan la soco in mid ka mid ah shuruudaha aan ku tilmaamay laba habayn via AMA. Sidan xirmada loo baahan yahay ayaa lagu xiri doonaa inta lagu jiro qaabeynta Debug.

Oo halkan waxaan ku haynaa ku dhawaad ​​wax kasta oo kaamil ah. Waxaan dib u soo ceshanaa mashruuca, awoodna qaabeynta aan u baahanahay, wac shayga " ee macnaha guud ee xalka (ma aha mashruuca)Soo celi dhammaan xirmooyinka NuGet" waxaana aragnaa sida xirmooyinkayadu isu beddelaan.

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Marxaladdan waxaan u imid dhammaad dhintay - si aan u ururiyo dhammaan qaabeynta hal mar, waxaan isticmaali karnaa kulanka batch (menu"GolahaΒ»->Β«Dufcaddii dhisid"), laakiin marka la beddelo qaabeynta, xirmooyinka si toos ah looma soo celiyo. Iyo marka la ururinayo mashruuca, tani sidoo kale ma dhacdo, inkastoo, aragti ahaan, waa in. Ma aanan helin xal dhibaatadan iyadoo la adeegsanayo hababka caadiga ah. Waxayna u badan tahay kani sidoo kale waa kutaan Visual Studio.

Sidaa darteed, ururinta dufcadda, waxaa la go'aamiyay in la isticmaalo nidaam gaar ah oo iswada qeexi. Runtii ma aanan rabin tan sababtoo ah waxaan u maleynayaa inay tahay mid xad dhaaf ah marka la eego horumarinta plugin, laakiin hadda ma arko xal kale. Iyo su'aasha ah "Waa maxay sababta Nuke?" Jawaabtu waa sahlan tahay - waxaan u isticmaalnaa shaqada.

Markaa, gal gal galka xalkeena (ma aha mashruuca), hoos u qabo furaha shift oo midig-guji meel bannaan oo ku taal galka - menu-ka macnaha guud dooro shayga "Fur daaqadda PowerShell halkan".

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Haddi aanad ku rakibin nukle, dabadeed marka hore qor amarka

dotnet tool install Nuke.GlobalTool –global

Hadda qor amarka nukle waxaana laguu sheegi doonaa inaad habayso nukle mashruuca hadda socda. Ma garanayo sida tan si sax ah loogu qoro Ruushka - Ingiriisiga ayaa lagu qori doonaa Lama heli karo faylka .nuke. Ma doonaysaa in aad dhisto habayn? [y/n]

Riix furaha Y ka dibna waxaa jiri doona waxyaabo toos ah. Waxaan u baahanahay ikhtiyaarka ugu fudud adoo isticmaalaya MSBuild, markaa waxaan uga jawaabeynaa sida shaashadda:

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Aan tagno Visual Studio, kaas oo nagu dhiirigelin doona inaan dib u dejino xalka, mar haddii mashruuc cusub lagu soo daray. Xalka ayaanu dib u dejinaynaa oo aragnaa in aanu mashruuc hayno dhiso kaas oo aan xiisayno hal fayl oo kaliya - Dhis.cs

Waxaan samaynaa hal mashruuc oo plugin ah oo lagu soo ururiyey noocyo kala duwan oo Revit/AutoCAD ah

Fur faylkan oo qor qoraal si aad u dhisto mashruuca dhammaan isku xidhka Hagaag, ama isticmaal qoraalkayga, kaas oo aad wax ka beddeli karto si baahiyahaaga ku habboon:

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

Waxaan ku soo laabaneynaa daaqada PowerShell oo mar labaad qor amarka nukle (waxaad qori kartaa amarka nukle oo tilmaamaya waxa loo baahan yahay Target. Laakiin waxaan leenahay hal Target, kaas oo ku shaqeeya default). Ka dib markaad riixdo furaha Gelida, waxaan dareemi doonaa sida hackers-ka dhabta ah, sababtoo ah, sida filim, mashruuceena si toos ah ayaa loo ururin doonaa qaabab kala duwan.

Jid ahaan, waxaad si toos ah uga isticmaali kartaa PowerShell Visual Studio (menu"ViewΒ»->Β«Daaqadaha kaleΒ»->Β«Console Maareeyaha Xidhmada"), laakiin wax walba waxay noqon doonaan madow iyo caddaan, taas oo aan aad u habboonayn.

Tani waxay ku soo gabagabaynaysaa maqaalkayga. Waxaan hubaa inaad adigu garan karto ikhtiyaarka AutoCAD naftaada. Waxaan rajeynayaa in waxyaabaha halkan lagu soo bandhigay ay heli doonaan "macaamisheeda".

Qalbadda

Source: www.habr.com

Add a comment