Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Þegar þú þróar viðbætur fyrir CAD forrit (í mínu tilfelli þetta eru AutoCAD, Revit og Renga) með tímanum, eitt vandamál kemur upp - nýjar útgáfur af forritum eru gefnar út, breyta þarf API þeirra og gera nýjar útgáfur af viðbótum.

Þegar þú ert aðeins með eina viðbót eða þú ert enn sjálflærður byrjandi í þessu efni geturðu einfaldlega búið til afrit af verkefninu, breytt nauðsynlegum stöðum í því og sett saman nýja útgáfu af viðbótinni. Samkvæmt því munu síðari breytingar á kóðanum hafa í för með sér margfalda hækkun launakostnaðar.

Þegar þú öðlast reynslu og þekkingu muntu finna nokkrar leiðir til að gera þetta ferli sjálfvirkt. Ég gekk þessa leið og mig langar að segja ykkur hvað ég endaði með og hversu þægilegt það er.

Fyrst skulum við skoða aðferð sem er augljós og sem ég hef notað lengi.

Tenglar á verkefnisskrár

Og til að gera allt einfalt, sjónrænt og skiljanlegt mun ég lýsa öllu með því að nota abstrakt dæmi um þróun viðbóta.

Opnum Visual Studio (ég er með Community 2019 útgáfuna. Og já - á rússnesku) og búum til nýja lausn. Við skulum hringja í hann MySuperPluginForRevit

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Við munum búa til viðbót fyrir Revit fyrir útgáfur 2015-2020. Þess vegna skulum við búa til nýtt verkefni í lausninni (Net Framework Class Library) og kalla það MySuperPluginForRevit_2015

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Við þurfum að bæta við tenglum við Revit API. Auðvitað getum við bætt tenglum við staðbundnar skrár (við þurfum að setja upp öll nauðsynleg SDK eða allar útgáfur af Revit), en við munum strax fylgja réttri leið og tengja NuGet pakkann. Þú getur fundið alveg marga pakka, en ég mun nota mína eigin.

Eftir að hafa tengt pakkann skaltu hægrismella á hlutinn “tilvísanir" og veldu hlutinn "Færa packages.config í PackageReference...»

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Ef þú byrjar skyndilega á þessum tímapunkti að örvænta, vegna þess að í pakkaeiginleikaglugganum verður enginn mikilvægur hlutur “Afritaðu á staðnum“, sem við þurfum örugglega að setja á gildi rangar, þá ekki örvænta - farðu í möppuna með verkefninu, opnaðu skrána með .csproj endingunni í ritstjóra sem hentar þér (ég nota Notepad++) og finndu færslu um pakkann okkar þar. Hún lítur svona út núna:

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

Bættu eign við það keyrslutími. Það mun koma svona út:

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

Nú, þegar verkefni er byggt, verða skrár úr pakkanum ekki afritaðar í úttaksmöppuna.
Við skulum ganga lengra - ímyndum okkur strax að viðbótin okkar muni nota eitthvað úr Revit API, sem hefur breyst með tímanum þegar nýjar útgáfur hafa verið gefnar út. Jæja, eða við þurfum bara að breyta einhverju í kóðanum eftir því hvaða útgáfu af Revit sem við erum að búa til viðbótina fyrir. Til að leysa slíkan mun á kóða munum við nota skilyrt safntákn. Opnaðu eiginleika verkefnisins, farðu í " flipannÞing"og á sviði"Skilyrt samantektarmerki„skrifum R2015.

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Athugaðu að táknið verður að bæta við fyrir bæði kembiforrit og útgáfustillingar.

Jæja, á meðan við erum í eiginleikaglugganum förum við strax í " flipannumsókn"og á sviði"Sjálfgefið nafnrými» fjarlægðu viðskeyti _2015þannig að nafnrýmið okkar sé alhliða og óháð samsetningarheitinu:

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Í mínu tilviki, í lokaafurðinni, eru viðbætur af öllum útgáfum settar í eina möppu, þannig að samsetningarnöfnin mín eru áfram með viðskeytinu á eyðublaðinu _20хх. En þú getur líka fjarlægt viðskeyti úr samsetningarheitinu ef skrárnar eiga að vera staðsettar í mismunandi möppum.

Við skulum fara í skráarkóðann Class1.cs og herma eftir einhverjum kóða þar, að teknu tilliti til mismunandi útgáfur af 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;
        }
    }
}

Ég tók strax tillit til allra útgáfur af Revit fyrir ofan útgáfu 2015 (sem voru tiltækar þegar þetta var skrifað) og tók strax tillit til tilvistar skilyrtra samantektartákna, sem eru búin til með sama sniðmáti.

Við skulum halda áfram að aðal hápunktinum. Við búum til nýtt verkefni í lausninni okkar, aðeins fyrir útgáfu af viðbótinni fyrir Revit 2016. Við endurtökum öll skrefin sem lýst er hér að ofan, í sömu röð og skipta út númerinu 2015 fyrir númerið 2016. En skráin Class1.cs eyða úr nýja verkefninu.

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Skrá með nauðsynlegum kóða - Class1.cs – við höfum það nú þegar og við þurfum bara að setja inn tengil á það í nýju verkefni. Það eru tvær leiðir til að setja inn tengla:

  1. Langt – hægrismelltu á verkefnið og veldu “Bæta»->«Núverandi þáttur", í glugganum sem opnast, finndu nauðsynlega skrá og í staðinn fyrir valkostinn "Bæta"veldu valmöguleikann"Bæta við sem tengingu»

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

  1. Stutt – beint í lausnarkönnuðinum, veldu viðkomandi skrá (eða jafnvel skrár, eða jafnvel heilar möppur) og dragðu hana inn í nýtt verkefni á meðan þú heldur Alt takkanum niðri. Þegar þú dregur muntu sjá að þegar þú ýtir á Alt takkann mun músarbendillinn breytast úr plúsmerki í ör.
    UPP: Ég gerði smá rugling í þessari málsgrein - til að flytja nokkrar skrár ættirðu að halda niðri Shift + Alt!

Eftir að hafa framkvæmt málsmeðferðina munum við hafa skrá í öðru verkefninu Class1.cs með samsvarandi tákni (blá ör):

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Þegar kóða er breytt í ritstjórnarglugganum geturðu líka valið í hvaða verkefnasamhengi þú vilt birta kóðann, sem gerir þér kleift að sjá kóðann sem er breytt undir mismunandi skilyrtum samantektartáknum:

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Við búum til öll önnur verkefni (2017-2020) með þessu kerfi. Life hack - ef þú dregur skrár í Solution Explorer ekki frá grunnverkefninu, heldur frá verkefninu þar sem þær eru þegar settar inn sem hlekkur, þá þarftu ekki að halda niðri Alt takkanum!

Valkosturinn sem lýst er er nokkuð góður þar til nýrri útgáfu af viðbótinni er bætt við eða þar til nýjum skrám er bætt við verkefnið - allt verður þetta mjög leiðinlegt. Og nýlega áttaði ég mig skyndilega á því hvernig á að redda þessu öllu með einu verkefni og við erum að halda áfram í seinni aðferðina

Galdurinn við stillingar

Þegar þú hefur lokið lestrinum hér gætirðu hrópað: "Af hverju lýstirðu fyrri aðferðinni, ef greinin er strax um þá seinni?!" Og ég lýsti öllu til að gera það skýrara hvers vegna við þurfum skilyrt safntákn og á hvaða stöðum verkefni okkar eru ólík. Og nú verður okkur ljósara nákvæmlega hvaða munur á verkefnum við þurfum að hrinda í framkvæmd, svo aðeins eitt verkefni er eftir.

Og til að gera allt augljósara munum við ekki búa til nýtt verkefni, heldur gera breytingar á núverandi verkefni sem búið var til á fyrsta hátt.

Svo fyrst og fremst fjarlægjum við öll verkefni úr lausninni nema það helsta (inniheldur skrárnar beint). Þeir. verkefni fyrir útgáfur 2016-2020. Opnaðu möppuna með lausninni og eyddu möppum þessara verkefna þar.

Við eigum eitt verkefni eftir í ákvörðun okkar - MySuperPluginForRevit_2015. Opnaðu eiginleika þess og:

  1. Á flipanum “umsókn"fjarlægðu viðskeyti úr samsetningarheitinu _2015 (síðar kemur í ljós hvers vegna)
  2. Á flipanum “Þing» fjarlægðu skilyrta safntáknið R2015 frá samsvarandi reit

Athugið: Nýjasta útgáfan af Visual Studio er með villu - skilyrt samantektartákn birtast ekki í eiginleikum verkefnisins, þó þau séu tiltæk. Ef þú finnur fyrir þessum galla þarftu að fjarlægja þá handvirkt úr .csproj skránni. Hins vegar verðum við enn að vinna í því, svo lestu áfram.

Endurnefna verkefnið í Solution Explorer glugganum með því að fjarlægja viðskeyti _2015 og fjarlægðu síðan verkefnið úr lausninni. Þetta er nauðsynlegt til að viðhalda reglu og tilfinningum fullkomnunaráráttu! Við opnum möppuna í lausninni okkar, endurnefni verkefnismöppuna þar á sama hátt og hleðum verkefninu aftur inn í lausnina.

Opnaðu stillingarstjórann. Bandarísk uppsetning Slepptu í grundvallaratriðum verður þess ekki þörf, þannig að við eyðum því út. Við búum til nýjar stillingar með nöfnum sem við kannast nú þegar við R2015, R2016, ..., R2020. Athugaðu að þú þarft ekki að afrita stillingar frá öðrum stillingum og þú þarft ekki að búa til verkstillingar:

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Farðu í möppuna með verkefninu og opnaðu skrána með .csproj endingunni í ritstjóra sem hentar þér. Við the vegur, þú getur líka opnað það í Visual Studio - þú þarft að afferma verkefnið og þá verður viðkomandi hlutur í samhengisvalmyndinni:

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Breyting í Visual Studio er jafnvel æskileg, þar sem ritstjórinn bæði stillir saman og hvetur.

Í skránni munum við sjá þættina Property Group – efst er hið almenna og svo koma skilyrðin. Þessir þættir setja eiginleika verkefnisins þegar það er byggt. Fyrsti þátturinn, sem er án skilyrða, setur almenna eiginleika og þættir með skilyrði breyta sumum eiginleikum í samræmi við það eftir stillingum.

Farðu í sameiginlega (fyrsta) þáttinn Property Group og skoða eignina Nafn þings – þetta er nafnið á þinginu og við ættum að hafa það án viðskeyti _2015. Ef það er viðskeyti skaltu fjarlægja það.

Að finna frumefni með skilyrði

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

Við þurfum þess ekki - við eyðum því.

Element með ástandi

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

verður þörf til að vinna á stigi kóðaþróunar og villuleit. Þú getur breytt eiginleikum þess til að henta þínum þörfum - stillt mismunandi framleiðsluleiðir, breytt skilyrtum safntáknum osfrv.

Nú skulum við búa til nýja þætti Property Group fyrir stillingar okkar. Í þessum þáttum þurfum við bara að setja fjóra eiginleika:

  • OutputPath – úttaksmappa. Ég stillti sjálfgefið gildi binR20xx
  • Skilgreindu stöðuga – skilyrt safntákn. Gildið ætti að tilgreina TRACE;R20хх
  • TargetFrameworkVersion - vettvangsútgáfa. Mismunandi útgáfur af Revit API krefjast þess að mismunandi vettvangar séu tilgreindir.
  • Nafn þings – samsetningarheiti (þ.e. skráarnafn). Þú getur skrifað nákvæmlega nafnið á samsetningunni, en fyrir fjölhæfni mæli ég með að skrifa gildið $(AssemblyName)_20хх. Til að gera þetta fjarlægðum við áður viðskeytið úr samsetningarheitinu

Mikilvægasti eiginleiki allra þessara þátta er að þeir geta einfaldlega verið afritaðir í önnur verkefni án þess að breyta þeim yfirleitt. Síðar í greininni mun ég hengja allt innihald .csproj skráarinnar.

Allt í lagi, við höfum fundið út eiginleika verkefnisins - það er ekki erfitt. En hvað á að gera við viðbótasöfn (NuGet pakka). Ef við lítum lengra munum við sjá að innifalin bókasöfn eru tilgreind í þáttunum Atriðahópur. En óheppni - þessi þáttur vinnur rangt úr skilyrðunum sem frumefni Property Group. Kannski er þetta jafnvel Visual Studio galli, en ef þú tilgreinir nokkra þætti Atriðahópur með stillingarskilyrðum, og setja inn mismunandi tengla á NuGet pakka inni, svo þegar þú breytir stillingunni eru allir tilgreindir pakkar tengdir við verkefnið.

Frumefnið kemur okkur til hjálpar Veldu, sem virkar samkvæmt okkar venjulegu rökfræði ef-þá-annað.

Að nota frumefni Veldu, við setjum mismunandi NuGet pakka fyrir mismunandi stillingar:

Allt innihald 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>

Vinsamlegast athugaðu að í einu af skilyrðunum tilgreindi ég tvær stillingar í gegnum EÐA. Þannig verður nauðsynlegur pakki tengdur við uppsetningu Kemba.

Og hér höfum við nánast allt fullkomið. Við hleðum verkefninu til baka, virkjum uppsetninguna sem við þurfum, köllum hlutinn “ í samhengisvalmynd lausnarinnar (ekki verkefnið)Endurheimtu alla NuGet pakka„Og við sjáum hvernig pakkarnir okkar breytast.

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Og á þessu stigi komst ég á blindgötu - til að safna öllum stillingum í einu, gætum við notað lotusamsetningu (valmynd "Þing»->«Lotusmíði"), en þegar skipt er um stillingar eru pakkar ekki sjálfkrafa endurheimtir. Og þegar verkefnið er sett saman gerist þetta heldur ekki, þó það ætti í orði að gera það. Ég hef ekki fundið lausn á þessu vandamáli með stöðluðum aðferðum. Og líklega er þetta líka Visual Studio galla.

Því var ákveðið að nota sérstakt sjálfvirkt samsetningarkerfi fyrir lotusamsetningu Nuke. Ég reyndar vildi þetta ekki vegna þess að mér finnst þetta vera of mikið í sambandi við þróun viðbóta, en í augnablikinu sé ég enga aðra lausn. Og við spurningunni "Af hverju Nuke?" Svarið er einfalt - við notum það í vinnunni.

Svo, farðu í möppuna fyrir lausnina okkar (ekki verkefnið), haltu inni takkanum Shift og hægrismelltu á autt pláss í möppunni - í samhengisvalmyndinni veldu hlutinn “Opnaðu PowerShell gluggann hér'.

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Ef þú ert ekki með það uppsett nuke, skrifaðu síðan skipunina fyrst

dotnet tool install Nuke.GlobalTool –global

Skrifaðu nú skipunina nuke og þú verður beðinn um að stilla nuke fyrir yfirstandandi verkefni. Ég veit ekki hvernig á að skrifa þetta réttara á rússnesku - á ensku verður það skrifað Gat ekki fundið .nuke skrá. Viltu setja upp byggingu? [y/n]

Ýttu á Y takkann og þá verða bein stillingaratriði. Við þurfum einfaldasta valkostinn með því að nota MSBuild, svo við svörum eins og á skjáskotinu:

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Við skulum fara í Visual Studio, sem mun hvetja okkur til að endurhlaða lausnina, þar sem nýtt verkefni hefur verið bætt við það. Við endurhleðjum lausnina og sjáum að við erum með verkefni byggja þar sem við höfum áhuga á aðeins einni skrá - Byggja.cs

Við gerum eitt viðbótaverkefni með samantekt fyrir mismunandi útgáfur af Revit/AutoCAD

Opnaðu þessa skrá og skrifaðu handrit til að búa til verkefnið fyrir allar stillingar. Jæja, eða notaðu handritið mitt, sem þú getur breytt til að henta þínum þörfum:

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

Við snúum aftur í PowerShell gluggann og skrifum skipunina aftur nuke (þú getur skrifað skipunina nuke sem gefur til kynna nauðsynlega Markmál. En við eigum einn Markmál, sem keyrir sjálfgefið). Eftir að hafa ýtt á Enter takkann munum við líða eins og alvöru tölvusnápur, því eins og í kvikmynd verður verkefnið okkar sjálfkrafa sett saman fyrir mismunandi stillingar.

Við the vegur, þú getur notað PowerShell beint frá Visual Studio (valmynd "Skoða»->«Aðrir gluggar»->«Stjórnborð pakkastjóra“), en allt verður í svörtu og hvítu, sem er ekki mjög þægilegt.

Þetta lýkur grein minni. Ég er viss um að þú getur fundið út möguleikann fyrir AutoCAD sjálfur. Ég vona að efnið sem hér er kynnt muni finna „viðskiptavini“ sína.

Svara með tilvísun!

Heimild: www.habr.com

Bæta við athugasemd