Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Agus forlíontáin á bhforbairt le haghaidh feidhmchláir CAD (i mo chás is iad sin AutoCAD, Revit agus Renga) le himeacht ama, tá fadhb amháin le feiceáil - scaoiltear leaganacha nua de chláir, a n-athruithe API agus is gá leaganacha nua de bhreiseáin a dhéanamh.

Nuair nach bhfuil ach breiseán amháin agat nó má tá tú fós i do thosaitheoirí féinmhúinte san ábhar seo, is féidir leat cóip a dhéanamh den tionscadal, na háiteanna riachtanacha a athrú agus leagan nua den bhreiseán a chur le chéile. Dá réir sin, beidh méadú iolrach ar chostais saothair i gceist le hathruithe ina dhiaidh sin ar an gcód.

De réir mar a gheobhaidh tú taithí agus eolas, gheobhaidh tú roinnt bealaí chun an próiseas seo a uathoibriú. Shiúil mé an cosán seo agus ba mhaith liom a insint duit cad a chríochnaigh mé agus cé chomh áisiúil agus atá sé.

Ar dtús, déanaimis féachaint ar mhodh atá soiléir agus atá in úsáid agam le fada an lá.

Naisc chuig comhaid tionscadail

Agus chun gach rud a dhéanamh simplí, amhairc agus intuigthe, déanfaidh mé cur síos ar gach rud ag baint úsáide as sampla teibí d'fhorbairt breiseán.

A ligean ar oscailt Visual Studio (tá an leagan 2019 Pobail agam. Agus tá - i Rúisis) agus réiteach nua a chruthú. A ligean ar glaoch air MySuperPluginForRevit

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Beimid ag déanamh breiseán do Revit do leaganacha 2015-2020. Mar sin, déanaimis tionscadal nua a chruthú sa réiteach (Leabharlann Glan-Chreat Ranga) agus glaoimid air MySuperPluginForRevit_2015

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Ní mór dúinn naisc a chur leis an Revit API. Ar ndóigh, is féidir linn naisc a chur le comhaid áitiúla (beidh orainn na SDKanna riachtanacha go léir nó gach leagan de Revit a shuiteáil), ach leanfaimid láithreach an cosán ceart agus nascfaimid an pacáiste NuGet. Is féidir leat go leor pacáistí a fháil, ach úsáidfidh mé mo chuid féin.

Tar éis duit an pacáiste a nascadh, cliceáil ar dheis ar an mír “tagairtí" agus roghnaigh an mhír "Bog pacáistí.config go PackageReference...»

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Más rud é go tobann ag an bpointe seo tosaíonn tú ag scaoll, mar ní bheidh aon mhír thábhachtach i bhfuinneog airíonna an phacáiste "Cóipeáil go háitiúil", rud is cinnte nach mór dúinn a shocrú ar an luach bréagach, ansin ná bí buartha - téigh go dtí an fillteán leis an tionscadal, oscail an comhad leis an síneadh .csproj in eagarthóir atá áisiúil duit (úsáidim Notepad ++) agus faigh iontráil faoinár bpacáiste ann. Breathnaíonn sí mar seo anois:

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

Cuir airí leis am rite. Casfaidh sé amach mar seo:

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

Anois, agus tionscadal á thógáil, ní dhéanfar comhaid ón bpacáiste a chóipeáil chuig an bhfillteán aschuir.
Rachaimid níos faide - déanaimis a shamhlú láithreach go n-úsáidfidh ár mbreiseán rud éigin ón Revit API, a d'athraigh le himeacht ama nuair a scaoileadh leaganacha nua. Bhuel, nó ní mór dúinn ach rud éigin sa chód a athrú ag brath ar an leagan de Revit a bhfuil an breiseán á dhéanamh againn. Chun difríochtaí cód den sórt sin a réiteach, úsáidfimid siombailí tiomsaithe coinníollach. Oscail airíonna an tionscadail, téigh go dtí an " tabTionól"agus sa pháirc"Nodaireacht tiomsaithe choinníollach" scríobhaimis R2015.

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Tabhair faoi deara nach mór an tsiombail a chur leis do na cumraíochtaí Dífhabhtaithe agus Scaoilte araon.

Bhuel, agus muid i bhfuinneog na n-airíonna, téighimid láithreach chuig an " tabIarratas"agus sa pháirc"Ainmspás réamhshocraithe» bain an iarmhír _2015ionas go mbeidh ár n-ainmspás uilíoch agus neamhspleách ar an ainm tionóil:

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

I mo chás, sa táirge deiridh, cuirtear forlíontáin de gach leagan isteach i bhfillteán amháin, mar sin fanann m'ainmneacha tionóil le iarmhír na foirme _20хх. Ach is féidir leat an iarmhír a bhaint den ainm tionóil freisin má tá na comhaid ceaptha a bheith suite i bhfillteáin éagsúla.

A ligean ar dul go dtí an cód comhaid Rang1.cs agus insamhail roinnt cód ansin, ag cur san áireamh leaganacha éagsúla de 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;
        }
    }
}

Chuir mé san áireamh láithreach gach leagan de Revit thuas leagan 2015 (a bhí ar fáil tráth scríofa) agus chuir mé san áireamh láithreach láithreacht siombailí tiomsú coinníollach, a chruthaítear ag baint úsáide as an teimpléad céanna.

A ligean ar bogadh ar aghaidh go dtí an bhuaicphointe is mó. Cruthaímid tionscadal nua inár réiteach, ach amháin le haghaidh leagan an bhreiseáin le haghaidh Revit 2016. Déanaimid arís na céimeanna go léir a thuairiscítear thuas, faoi seach, ag cur in ionad an uimhir 2015 leis an uimhir 2016. Ach an comhad Rang1.cs scriosadh as an tionscadal nua.

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Comhad leis an gcód riachtanach - Rang1.cs – tá sé againn cheana féin agus níl le déanamh againn ach nasc a chur isteach i dtionscadal nua. Tá dhá bhealach ann chun naisc a chur isteach:

  1. Fada – deaschliceáil ar an tionscadal agus roghnaigh “Cuir»->«Gné atá ann cheana féin", sa fhuinneog a osclaíonn, aimsigh an comhad riachtanach agus in ionad an rogha "Cuir" roghnaigh an rogha "Cuir leis mar cheangal»

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

  1. Gearr – go díreach sa taiscéalaí réitigh, roghnaigh an comhad atá ag teastáil (nó fiú comhaid, nó fiú fillteáin iomlána) agus tarraing isteach i dtionscadal nua é agus an eochair Alt á choinneáil síos agat. Agus tú ag tarraingt, feicfidh tú nuair a bhrúnn tú an eochair Alt, go n-athróidh cúrsóir na luiche ó chomhartha móide go saighead.
    Suas chun dáta: Rinne mé beagán mearbhall sa mhír seo - chun roinnt comhad a aistriú ba chóir duit a choinneáil síos Aistriú + Alt!

Tar éis an nós imeachta a dhéanamh, beidh comhad againn sa dara tionscadal Rang1.cs leis an deilbhín comhfhreagrach (saighead ghorm):

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Agus an cód á chur in eagar i bhfuinneog an eagarthóra, is féidir leat a roghnú freisin cén comhthéacs tionscadail chun an cód a thaispeáint ann, rud a ligfidh duit an cód a fheiceáil á chur in eagar faoi shiombailí tiomsaithe coinníollacha éagsúla:

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Cruthaímid gach tionscadal eile (2017-2020) ag baint úsáide as an scéim seo. Lifehack - má tharraingíonn tú comhaid sa Solution Explorer ní ón mbuntionscadal, ach ón tionscadal ina bhfuil siad curtha isteach mar nasc cheana féin, ní gá duit an eochair Alt a choinneáil síos!

Tá an rogha a thuairiscítear sách maith go dtí an nóiméad a gcuirtear leagan nua den bhreiseán leis nó go dtí an nóiméad a gcuirtear comhaid nua leis an tionscadal - éiríonn sé seo go léir an-tedious. Agus le déanaí thuig mé go tobann go tobann conas é a réiteach go léir le tionscadal amháin agus táimid ag bogadh ar aghaidh go dtí an dara modh

Draíocht na bhfoirmíochtaí

Tar éis duit an léamh a chríochnú anseo, féadfaidh tú a rá, "Cén fáth a ndearna tú cur síos ar an gcéad mhodh, má tá an t-alt láithreach faoin dara modh?!" Agus rinne mé cur síos ar gach rud chun é a dhéanamh níos soiléire cén fáth a dteastaíonn siombailí tiomsaithe coinníollach uainn agus na háiteanna ina bhfuil difríocht idir ár dtionscadail. Agus anois éiríonn sé níos soiléire dúinn go díreach cad iad na difríochtaí idir na tionscadail is gá dúinn a chur i bhfeidhm, ag fágáil ach tionscadal amháin.

Agus chun gach rud a dhéanamh níos soiléire, ní chruthóimid tionscadal nua, ach déanfaimid athruithe ar ár dtionscadal reatha a cruthaíodh ar an gcéad bhealach.

Mar sin, ar an gcéad dul síos, bainimid gach tionscadal ón réiteach ach amháin an ceann is mó (ina bhfuil na comhaid go díreach). Iad siúd. tionscadail le haghaidh leaganacha 2016-2020. Oscail an fillteán leis an réiteach agus scrios fillteáin na dtionscadal seo ann.

Tá tionscadal amháin fágtha inár gcinneadh - MySuperPluginForRevit_2015. Oscail a chuid maoine agus:

  1. Ar an táb “Iarratas"bain an iarmhír den ainm tionóil _2015 (beidh sé soiléir cén fáth níos déanaí)
  2. Ar an táb “Tionól» bain an tsiombail tiomsaithe choinníollaigh R2015 ón réimse comhfhreagrach

Tabhair faoi deara: tá fabht sa leagan is déanaí de Visual Studio - ní thaispeántar siombailí tiomsaithe coinníollach i bhfuinneog airíonna an tionscadail, cé go bhfuil siad ar fáil. Má bhíonn an glitch seo agat, ní mór duit iad a bhaint de láimh ón gcomhad .csproj. Mar sin féin, ní mór dúinn oibriú ann fós, mar sin léigh ar aghaidh.

Athainmnigh an tionscadal i bhfuinneog Solution Explorer tríd an iarmhír a bhaint _2015 agus ansin bain an tionscadal as an réiteach. Tá sé seo riachtanach chun ord agus mothúcháin perfectionists a choinneáil! Osclaímid fillteán ár réiteach, athainmnigh an fillteán tionscadail ansin ar an mbealach céanna agus luchtú an tionscadal ar ais isteach sa réiteach.

Oscail an bainisteoir cumraíochta. cumraíocht SAM Scaoileadh i bprionsabal, ní bheidh sé ag teastáil, mar sin scriosaimid é. Cruthaímid cumraíochtaí nua le hainmneacha atá ar eolas againn cheana féin R2015, R2016,…, R2020. Tabhair faoi deara nach gá duit socruithe a chóipeáil ó chumraíochtaí eile agus ní gá duit cumraíochtaí tionscadail a chruthú:

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Téigh go dtí an fillteán leis an tionscadal agus an comhad a oscailt leis an síneadh .csproj i eagarthóir áisiúil duit. Dála an scéil, is féidir leat é a oscailt in Visual Studio freisin - ní mór duit an tionscadal a dhíluchtú agus ansin beidh an mhír atá ag teastáil sa roghchlár comhthéacs:

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Is fearr fiú eagarthóireacht a dhéanamh in Visual Studio, ós rud é go ndéanann an t-eagarthóir ailíniú agus leideanna.

Sa chomhad feicfimid na heilimintí Grúpa Maoine – ag an mbarr tá ceann ginearálta, agus ansin tagann siad le coinníollacha. Leagann na heilimintí seo airíonna an tionscadail nuair a thógtar é. Leagann an chéad eilimint, atá gan coinníollacha, airíonna ginearálta, agus gnéithe le coinníollacha, dá réir sin, athraíonn roinnt maoine ag brath ar na cumraíochtaí.

Téigh go dtí an eilimint choitianta (an chéad). Grúpa Maoine agus féach ar an maoin TionóilName – seo ainm an chomhthionóil agus ba cheart go mbeadh sé againn gan iarmhír _2015. Má tá iarmhír ann, bain ansin é.

Gné a aimsiú le riocht

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

Níl sé de dhíth orainn - scriosaimid é.

Eilimint le riocht

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

chun oibriú ag an gcéim forbartha cód agus dífhabhtaithe. Is féidir leat a chuid maoine a athrú chun freastal ar do chuid riachtanas - socraigh cosáin aschuir éagsúla, athraigh siombailí tiomsaithe coinníollach, etc.

Anois, déanaimis eilimintí nua a chruthú Grúpa Maoine le haghaidh ár bhfoirmíochtaí. Sna heilimintí seo ní mór dúinn ach ceithre airí a shocrú:

  • Conair Aschuir – fillteán aschuir. Shocraigh mé an luach réamhshocraithe binR20xx
  • SainmhínighConstants – siombailí tiomsaithe coinníollach. Ba cheart an luach a shonrú RIAN; R20хх
  • Leagan TargaidFramework - leagan ardán. Éilíonn leaganacha éagsúla den Revit API ardáin éagsúla a shonrú.
  • TionóilName – ainm an tionóil (i.e. ainm an chomhaid). Is féidir leat ainm cruinn an tionóil a scríobh, ach ar mhaithe le solúbthacht molaim an luach a scríobh $(AssemblyName)_20хх. Chun seo a dhéanamh, bhaineamar an iarmhír den ainm tionóil roimhe seo

Is í an ghné is tábhachtaí de na gnéithe seo go léir ná gur féidir iad a chóipeáil go simplí i dtionscadail eile gan iad a athrú ar chor ar bith. Níos déanaí san alt cuirfidh mé gach ábhar sa chomhad .csproj i gceangal leis seo.

Ceart go leor, rinneamar airíonna an tionscadail a ríomh - níl sé deacair. Ach cad atá le déanamh le leabharlanna plug-in (pacáistí NuGet). Má fhéachaimid níos faide, feicfimid go bhfuil na leabharlanna san áireamh sonraithe sna heilimintí Grúpa Mír. Ach droch-ádh - déanann an eilimint seo na coinníollacha a phróiseáil go mícheart mar eilimint Grúpa Maoine. B'fhéidir gur glitch Visual Studio é seo fiú, ach má shonraíonn tú roinnt gnéithe Grúpa Mír le coinníollacha cumraíochta, agus cuir isteach naisc éagsúla le pacáistí NuGet taobh istigh, ansin nuair a athraíonn tú an chumraíocht, tá gach pacáiste sonraithe ceangailte leis an tionscadal.

Tagann an eilimint chun ár gcabhair Roghnaigh, a oibríonn de réir ár ngnáthloighic más rud é-ansin-eile.

Ag baint úsáide as eilimint Roghnaigh, socróimid pacáistí NuGet éagsúla le haghaidh cumraíochtaí éagsúla:

Gach ábhar 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>

Tabhair faoi deara gur shonraigh mé dhá chumraíocht trí cheann de na coinníollacha . Ar an mbealach seo beidh an pacáiste riachtanach ceangailte le linn cumraíochta Dífhabhtaigh.

Agus anseo tá beagnach gach rud foirfe. Déanaimid an tionscadal a luchtú ar ais, cumasaítear an chumraíocht a theastaíonn uainn, glaoimid an mhír “ i roghchlár comhthéacs an réitigh (ní an tionscadal)Athchóirigh gach pacáiste NuGet“agus feicimid conas a athraíonn ár bpacáistí.

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Agus ag an gcéim seo tháinig mé chun deiridh - chun na cumraíochtaí go léir a bhailiú ag an am céanna, d'fhéadfaimis úsáid a bhaint as tionól baisc (roghchlár "Tionól»->«Tógáil bhaisc"), ach nuair a aistrítear cumraíochtaí, ní dhéantar pacáistí a athchóiriú go huathoibríoch. Agus nuair a bhíonn an tionscadal á chur le chéile, ní tharlaíonn sé seo freisin, cé gur chóir, go teoiriciúil. Ní bhfuair mé réiteach ar an bhfadhb seo trí úsáid a bhaint as modhanna caighdeánacha. Agus is dócha gur fabht Stiúideo Amharc é seo freisin.

Dá bhrí sin, le haghaidh cóimeála baisc, socraíodh córas speisialta tionóil uathoibrithe a úsáid Nuke. I ndáiríre ní raibh mé ag iarraidh seo mar is dóigh liom go bhfuil sé overkill ó thaobh forbairt breiseán, ach faoi láthair ní féidir liom a fheiceáil ar aon réiteach eile. Agus ar an gceist "Cén fáth Nuke?" Is é an freagra simplí - úsáidimid é ag an obair.

Mar sin, téigh go dtí an fillteán ar ár réiteach (ní an tionscadal), a shealbhú síos an eochair Shift agus deaschliceáil ar spás folamh san fhillteán - sa roghchlár comhthéacs roghnaigh an mhír “Oscail fuinneog PowerShell anseo'.

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Mura bhfuil sé suiteáilte agat nuke, ansin scríobh an t-ordú ar dtús

dotnet tool install Nuke.GlobalTool –global

Anois scríobh an t-ordú nuke agus tabharfar leid duit a chumrú nuke don tionscadal reatha. Níl a fhios agam conas é seo a scríobh i gceart i Rúisis - i mBéarla a scríobhfar Níorbh fhéidir an comhad .nuke a aimsiú. Ar mhaith leat tógáil a shocrú? [y/n]

Brúigh an eochair Y agus ansin beidh míreanna socruithe díreacha ann. Ní mór dúinn an rogha is simplí ag baint úsáide as MSBuild, mar sin freagraimid mar atá sa screenshot:

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

A ligean ar dul go dtí Visual Studio, a spreagfaidh dúinn a athlódáil an réiteach, ós rud é go bhfuil tionscadal nua curtha leis. Déanaimid an réiteach a athlódáil agus feicimid go bhfuil tionscadal againn a thógáil ina bhfuil suim againn i gcomhad amháin - Tóg.cs

Déanaimid tionscadal breiseán amháin le tiomsú do leaganacha éagsúla de Revit/AutoCAD

Oscail an comhad seo agus scríobh script chun an tionscadal a thógáil do gach cumraíocht. Bhuel, nó bain úsáid as mo script, ar féidir leat a chur in eagar chun freastal ar do chuid riachtanas:

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

Fillimid ar fhuinneog PowerShell agus scríobhaimid an t-ordú arís nuke (is féidir leat an t-ordú a scríobh nuke ag léiriú an gá Sprioc. Ach tá ceann againn Sprioc, a ritheann de réir réamhshocraithe). Tar éis an eochair Enter a bhrú, mothaímid cosúil le hackers fíor, mar, cosúil le scannán, déanfar ár dtionscadal a chur le chéile go huathoibríoch le haghaidh cumraíochtaí éagsúla.

Dála an scéil, is féidir leat PowerShell a úsáid go díreach ó Visual Studio (roghchlár "Féach ar»->«Fuinneoga eile»->«Consól Bainisteoir Pacáiste"), ach beidh gach rud i dubh agus bán, nach bhfuil an-áisiúil.

Críochnaíonn sé seo mo alt. Táim cinnte gur féidir leat an rogha do AutoCAD a dhéanamh amach duit féin. Tá súil agam go bhfaighidh an t-ábhar a chuirtear i láthair anseo a chuid “cliaint”.

Go raibh maith agat as bhur n-aire!

Foinse: will.com

Add a comment