Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Mukamapanga mapulagini a mapulogalamu a CAD (pa ine awa ndi AutoCAD, Revit ndi Renga) pakapita nthawi, vuto limodzi likuwonekera - mapulogalamu atsopano amamasulidwa, kusintha kwawo kwa API ndi mapulagini atsopano ayenera kupangidwa.

Mukakhala ndi pulogalamu yowonjezera imodzi kapena mukadali wodziphunzitsa nokha pankhaniyi, mutha kungopanga kopi ya polojekitiyo, kusintha malo ofunikira momwemo ndikusonkhanitsa mtundu watsopano wa pulogalamu yowonjezera. Chifukwa chake, kusintha kotsatira pama code kudzaphatikiza kuchuluka kwa ndalama zogwirira ntchito.

Mukapeza chidziwitso ndi chidziwitso, mupeza njira zingapo zosinthira izi. Ndidayenda njira iyi ndipo ndikufuna ndikuuzeni zomwe zidandithera komanso momwe zilili zosavuta.

Choyamba, tiyeni tiwone njira yomwe ili yodziwikiratu komanso yomwe ndagwiritsa ntchito kwa nthawi yayitali.

Maulalo ku mafayilo a polojekiti

Ndipo kuti chilichonse chikhale chosavuta, chowoneka komanso chomveka, ndikufotokozera chilichonse pogwiritsa ntchito chitsanzo chosavuta cha plugin.

Tiyeni titsegule Visual Studio (ndili ndi Community 2019 version. Ndipo inde - mu Russian) ndikupanga yankho latsopano. Tiyeni timuyitane MySuperPluginForRevit

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Tikhala tikupanga pulogalamu yowonjezera ya Revit yamitundu ya 2015-2020. Chifukwa chake, tiyeni tipange pulojekiti yatsopano mu yankho (Net Framework Class Library) ndikuyitcha MySuperPluginForRevit_2015

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Tiyenera kuwonjezera maulalo ku Revit API. Zachidziwikire, titha kuwonjezera maulalo kumafayilo am'deralo (tidzafunika kukhazikitsa ma SDK onse ofunikira kapena mitundu yonse ya Revit), koma nthawi yomweyo tidzatsata njira yoyenera ndikulumikiza phukusi la NuGet. Mutha kupeza mapaketi angapo, koma ndigwiritsa ntchito yanga.

Pambuyo polumikiza phukusi, dinani kumanja pa chinthucho "powatsimikizira"ndi kusankha chinthucho"Sunthani packages.config kupita ku PackageReference...»

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Ngati mwadzidzidzi panthawiyi muyamba kuchita mantha, chifukwa pawindo la katundu wa phukusi sipadzakhala chinthu chofunikira "Koperani kwanuko", zomwe tiyenera kuziyika pamtengo zabodza, ndiye musawopsyeze - pitani ku chikwatu ndi polojekiti, tsegulani fayilo ndi .csproj yowonjezera mu mkonzi wosavuta kwa inu (ndimagwiritsa ntchito Notepad ++) ndikupeza cholowa cha phukusi lathu kumeneko. Akuwoneka chonchi tsopano:

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

Onjezani katundu kwa icho nthawi yothamanga. Zidzakhala motere:

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

Tsopano, pomanga pulojekiti, mafayilo kuchokera pa phukusi sangakoperedwe ku foda yotulutsa.
Tiyeni tipite patsogolo - tiyeni tingoganizira nthawi yomweyo kuti pulogalamu yathu yowonjezera idzagwiritsa ntchito china chake kuchokera ku Revit API, yomwe yasintha pakapita nthawi pamene mitundu yatsopano yatulutsidwa. Chabwino, kapena timangofunika kusintha china chake mu code kutengera mtundu wa Revit womwe tikupanga pulogalamu yowonjezera. Kuti tithetse kusiyana kotereku mu code, tidzagwiritsa ntchito zizindikiro zophatikiza zokhazikika. Tsegulani katundu wa polojekiti, pitani ku tabu "Msonkhano"ndi m'munda"Conditional compilation notation"tiyeni tilembe R2015.

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Dziwani kuti chizindikirocho chiyenera kuwonjezeredwa pazosintha zonse za Debug ndi Release.

Chabwino, tili pawindo la katundu, nthawi yomweyo timapita ku " tabuNtchito"ndi m'munda"Malo ofikira maina»chotsani mawuwo _2015kotero kuti malo athu a mayina ndi onse komanso osadalira dzina la msonkhano:

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Kwa ine, pazomaliza, mapulagini amitundu yonse amayikidwa mufoda imodzi, kotero mayina anga amsonkhano amakhalabe ndi chokwanira cha mawonekedwe. _20kh. Koma mutha kuchotsanso suffix ku dzina la msonkhano ngati mafayilo akuyenera kukhala m'mafoda osiyanasiyana.

Tiyeni tipite ku fayilo code Kalasi1.cs ndikuyerekeza ma code pamenepo, poganizira mitundu yosiyanasiyana ya 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;
        }
    }
}

Nthawi yomweyo ndinaganizira mitundu yonse ya Revit pamwambapa 2015 (yomwe inalipo panthawi yolemba) ndipo nthawi yomweyo ndinaganizira za kukhalapo kwa zizindikiro zophatikizika, zomwe zimapangidwa pogwiritsa ntchito template yomweyo.

Tiyeni tipitirire ku chowunikira chachikulu. Timapanga pulojekiti yatsopano mu yankho lathu, kokha kwa mtundu wa plugin wa Revit 2016. Timabwereza ndondomeko zonse zomwe tafotokozazi, motsatira, m'malo mwa chiwerengero cha 2015 ndi chiwerengero cha 2016. Koma fayilo Kalasi1.cs chotsani ku polojekiti yatsopano.

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Fayilo yokhala ndi nambala yofunikira - Kalasi1.cs - tili nazo kale ndipo timangofunika kuyika ulalo ku polojekiti yatsopano. Pali njira ziwiri zoyika maulalo:

  1. Wautali - dinani kumanja pa polojekiti ndikusankha "kuwonjezera»->«Zomwe zilipo", pawindo lomwe limatsegula, pezani fayilo yofunikira m'malo mwazosankha"kuwonjezera" sankhani njira "Onjezani ngati kulumikizana»

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

  1. Mwachidule - mwachindunji muzofufuza za mayankho, sankhani fayilo yomwe mukufuna (kapena mafayilo, kapena zikwatu zonse) ndikukokera ku projekiti yatsopano ndikugwirizira batani la Alt. Pamene mukukoka, mudzawona kuti mukasindikiza makiyi a Alt, cholozera cha mbewa chidzasintha kuchoka pa chizindikiro chowonjezera kukhala muvi.
    UPD: Ndinapanga chisokonezo pang'ono m'ndime iyi - kusamutsa mafayilo angapo muyenera kuwagwira Shift + Alt!

Pambuyo pochita ndondomekoyi, tidzakhala ndi fayilo mu polojekiti yachiwiri Kalasi1.cs ndi chizindikiro chofananira (muvi wabuluu):

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Mukasintha kachidindo pawindo la mkonzi, mutha kusankhanso mtundu wa projekiti kuti muwonetse kachidindo, zomwe zimakupatsani mwayi wowona kachidindo kamene kakusinthidwa pansi pazizindikiro zophatikizira zosiyanasiyana:

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Timapanga ntchito zina zonse (2017-2020) pogwiritsa ntchito ndondomekoyi. Moyo kuthyolako - ngati mukoka mafayilo mu Solution Explorer osati kuchokera ku projekiti yoyambira, koma kuchokera ku pulojekiti yomwe adayikidwa kale ngati ulalo, ndiye kuti simuyenera kuyika fungulo la Alt!

Njira yomwe tafotokozayi ndiyabwino kwambiri mpaka nthawi yowonjezera mtundu watsopano wa plugin kapena mpaka mphindi yowonjezera mafayilo atsopano ku polojekiti - zonsezi zimakhala zotopetsa kwambiri. Ndipo posachedwapa ndinazindikira mwadzidzidzi momwe ndingasinthire zonse ndi polojekiti imodzi ndipo tikupita ku njira yachiwiri

Matsenga a kasinthidwe

Mukamaliza kuŵerenga apa, munganene kuti, “N’chifukwa chiyani munafotokoza njira yoyamba, ngati nkhaniyo yangotsala pang’ono kufika yachiŵiri? Ndipo ndidafotokoza zonse kuti zimveke bwino chifukwa chake timafunikira zizindikiro zophatikizika komanso malo omwe mapulojekiti athu amasiyana. Ndipo tsopano zimamveka bwino kwa ife ndendende kusiyana kwa ma projekiti omwe tikuyenera kukhazikitsa, kusiya ntchito imodzi yokha.

Ndipo kuti zonse ziwonekere, sitidzapanga pulojekiti yatsopano, koma tidzasintha ntchito yathu yamakono yomwe idapangidwa poyamba.

Chifukwa chake, choyamba, timachotsa mapulojekiti onse ku yankho kupatulapo lalikulu (lomwe lili ndi mafayilo mwachindunji). Iwo. mapulojekiti amitundu ya 2016-2020. Tsegulani chikwatu ndi yankho ndikuchotsa zikwatu zamapulojekitiwa pamenepo.

Tili ndi projekiti imodzi yomwe yatsala mu lingaliro lathu - MySuperPluginForRevit_2015. Tsegulani katundu wake ndi:

  1. Pa tabu "Ntchito"chotsani mawuwo pa dzina la msonkhano _2015 (zidziwika chifukwa chake pambuyo pake)
  2. Pa tabu "Msonkhano» chotsani chizindikiro chophatikiza chokhazikika R2015 kuchokera kumunda wolingana

Chidziwitso: mtundu waposachedwa wa Visual Studio uli ndi cholakwika - zizindikiro zophatikizira zokhazikika sizimawonetsedwa pawindo lazinthu za polojekiti, ngakhale zilipo. Ngati mukukumana ndi vutoli, muyenera kuwachotsa pamanja pa fayilo ya .csproj. Komabe, tiyenerabe kugwira ntchito mmenemo, kotero werengani.

Tchulani pulojekitiyi pawindo la Solution Explorer pochotsa zomangirazo _2015 ndiyeno chotsani polojekitiyo ku yankho. Izi ndizofunikira kuti mukhale ndi dongosolo komanso malingaliro a anthu ofuna ungwiro! Timatsegula chikwatu cha yankho lathu, kutchulanso chikwatu cha polojekiti momwemonso ndikubwezeretsanso polojekitiyo.

Tsegulani woyang'anira kasinthidwe. Kusintha kwa US kumasulidwa kwenikweni, izo sizidzafunika, kotero ife kuchotsa izo. Timapanga masinthidwe atsopano ndi mayina omwe timawadziwa kale R2015, R2016,…, R2020. Zindikirani kuti simukuyenera kukopera zosintha kuchokera pazosintha zina ndipo simuyenera kupanga masinthidwe a polojekiti:

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Pitani ku chikwatu ndi polojekiti ndi kutsegula wapamwamba ndi .csproj kutambasuka mu mkonzi yabwino kwa inu. Mwa njira, mutha kuyitsegulanso mu Visual Studio - muyenera kutsitsa pulojekitiyo ndiyeno zomwe mukufuna zikhala pazosankha:

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Kusintha mu Visual Studio ndikwabwino, chifukwa mkonzi amalumikizana ndikulimbikitsa.

Mu fayilo tiwona zinthu PropertyGroup - pamwamba kwambiri ndi wamba, ndiyeno pamabwera mikhalidwe. Zinthu izi zimayika zinthu za polojekiti ikamangidwa. Chinthu choyamba, chomwe chilibe zikhalidwe, chimayika katundu wamba, ndi zinthu zomwe zili ndi mikhalidwe, motero, zimasintha zina kutengera masanjidwewo.

Pitani ku chinthu wamba (choyamba). PropertyGroup ndi kuyang'ana pa katundu AssemblyName - ili ndi dzina la msonkhano ndipo tiyenera kukhala nawo popanda suffix _2015. Ngati pali suffix, ndiye chotsani.

Kupeza chinthu chokhala ndi chikhalidwe

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

Sitikuzifuna - timazichotsa.

Chinthu chokhala ndi chikhalidwe

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

adzafunika kugwira ntchito pa siteji ya chitukuko ndi debugging. Mutha kusintha mawonekedwe ake kuti agwirizane ndi zosowa zanu - khazikitsani njira zosiyanasiyana zotulutsira, sinthani zizindikiro zophatikizira, ndi zina.

Tsopano tiyeni tipange zinthu zatsopano PropertyGroup za kasinthidwe athu. Muzinthu izi timangofunika kukhazikitsa zinthu zinayi:

  • OutputPath - chikwatu chotulutsa. Ndakhazikitsa mtengo wokhazikika binR20xx
  • DefineConstants - zizindikiro zophatikiza zokhazikika. Mtengo uyenera kufotokozedwa TRACE;R20хх
  • TargetFrameworkVersion - nsanja Baibulo. Mitundu yosiyanasiyana ya Revit API imafuna kuti mapulatifomu osiyanasiyana atchulidwe.
  • AssemblyName - dzina la msonkhano (ie dzina lafayilo). Mutha kulemba dzina lenileni la msonkhanowo, koma kuti mugwiritse ntchito mosiyanasiyana ndikupangira kuti mulembe mtengowo $(AssemblyName)_20хх. Kuti tichite izi, tidachotsa kale chowonjezeracho ku dzina la msonkhano

Chofunikira kwambiri pazigawo zonsezi ndikuti zitha kukopedwa muma projekiti ena osasintha konse. Kenako m'nkhani ine angagwirizanitse zonse zili mu .csproj wapamwamba.

Chabwino, taganizira za ntchitoyo - sizovuta. Koma choti muchite ndi malaibulale a plug-in (maphukusi a NuGet). Ngati tiyang'ana mopitilira, tiwona kuti malaibulale omwe akuphatikizidwa akufotokozedwa muzinthu ItemGroup. Koma tsoka - chinthu ichi molakwika chimakonza zinthu ngati chinthu PropertyGroup. Mwina izi ndi glitch ya Visual Studio, koma ngati mungatchule zinthu zingapo ItemGroup ndi zikhalidwe zosinthira, ndikuyika maulalo osiyanasiyana ku phukusi la NuGet mkati, ndiye mukasintha kasinthidwe, maphukusi onse otchulidwa amalumikizidwa ndi polojekitiyi.

Mfundoyi imatithandiza Sankhani, zomwe zimagwira ntchito molingana ndi malingaliro athu anthawi zonse ngati-ndiye-china.

Kugwiritsa ntchito element Sankhani, timayika mapaketi osiyanasiyana a NuGet pamasinthidwe osiyanasiyana:

Zonse zomwe zili mkati 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>

Chonde dziwani kuti m'modzi mwazomwe ndidatchula masinthidwe awiri kudzera KAPENA. Mwanjira iyi phukusi lofunikira lidzalumikizidwa panthawi yokonzekera Kutupa.

Ndipo apa tili ndi pafupifupi chirichonse changwiro. Timabwezeretsa pulojekitiyi, yambitsani kasinthidwe komwe tikufuna, imbani chinthucho " muzosankha zomwe zili ndi yankho (osati polojekitiyo)Bwezerani maphukusi onse a NuGet"ndipo tikuwona momwe mapaketi athu amasinthira.

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Ndipo panthawiyi ndidafika kumapeto - kuti tisonkhanitse zosintha zonse nthawi imodzi, titha kugwiritsa ntchito batch assembly (menu "Msonkhano»->«Kupanga gulu"), koma mukasintha masinthidwe, mapaketi samabwezeretsedwa. Ndipo posonkhanitsa pulojekitiyi, izi sizichitikanso, ngakhale, m'malingaliro, ziyenera. Sindinapeze njira yothetsera vutoli pogwiritsa ntchito njira zokhazikika. Ndipo mwina ichinso ndi cholakwika cha Visual Studio.

Chifukwa chake, pakusokonekera kwa batch, adaganiza zogwiritsa ntchito makina apadera ochitira msonkhano AlankhuleniI Ndi Mau Amphamvu. Ine kwenikweni sindinkafuna izi chifukwa ine ndikuganiza izo overkill mawu a pulagi chitukuko, koma pakali pano sindikuwona njira ina iliyonse. Ndipo ku funso "Chifukwa chiyani Nuke?" Yankho ndi losavuta - timagwiritsa ntchito kuntchito.

Chifukwa chake, pitani ku chikwatu cha yankho lathu (osati ntchitoyo), gwirani kiyi kosangalatsa ndikudina kumanja pamalo opanda kanthu mufoda - mumenyu yankhaniyo sankhani chinthucho "Tsegulani zenera la PowerShell apa".

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Ngati mulibe anaika nuke, kenako lembani kaye lamulolo

dotnet tool install Nuke.GlobalTool –global

Tsopano lembani lamulo nuke ndipo mudzafunsidwa kuti musinthe nuke za polojekiti yomwe ilipo. Sindikudziwa kulemba izi molondola mu Russian - mu Chingerezi zidzalembedwa Sindinapeze fayilo ya .nuke. Mukufuna kukhazikitsa chomanga? [y/n]

Dinani Y kiyi ndiyeno padzakhala zoikamo mwachindunji zinthu. Timafunikira njira yosavuta kugwiritsa ntchito MSBuild, kotero tikuyankha monga pa skrini:

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Tiyeni tipite ku Visual Studio, zomwe zidzatipangitse kutsitsanso yankho, popeza pulojekiti yatsopano yawonjezedwa. Timatsegulanso yankho ndikuwona kuti tili ndi polojekiti kumanga momwe timasangalalira ndi fayilo imodzi yokha - Build.cs

Timapanga pulojekiti imodzi yophatikiza ndi kuphatikiza mitundu yosiyanasiyana ya Revit/AutoCAD

Tsegulani fayiloyi ndikulemba script kuti mumange pulojekiti pazosintha zonse. Chabwino, kapena gwiritsani ntchito zolemba zanga, zomwe mungathe kusintha kuti zigwirizane ndi zosowa zanu:

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

Timabwerera kuwindo la PowerShell ndikulembanso lamulo nuke (mukhoza kulemba lamulo nuke kusonyeza zofunika chandamale. Koma ife tiri nawo mmodzi chandamale, yomwe imayenda mokhazikika). Pambuyo pokanikiza fungulo la Enter, tidzamva ngati owononga enieni, chifukwa, monga mufilimu, polojekiti yathu idzasonkhanitsidwa kuti ikhale yosiyana.

Mwa njira, mutha kugwiritsa ntchito PowerShell mwachindunji kuchokera ku Visual Studio (menyu "view»->«Mawindo ena»->«Package Manager Console"), koma zonse zidzakhala zakuda ndi zoyera, zomwe sizothandiza kwambiri.

Izi zikumaliza nkhani yanga. Ndikukhulupirira kuti mutha kupeza njira ya AutoCAD nokha. Ndikukhulupirira kuti zomwe zaperekedwa apa zipeza "makasitomala" ake.

Zikomo chifukwa cha chidwi chanu!

Source: www.habr.com

Kuwonjezera ndemanga