Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Wakati wa kuunda programu-jalizi za programu za CAD (katika kesi yangu hizi ni AutoCAD, Revit na Renga) baada ya muda, tatizo moja linaonekana - matoleo mapya ya programu hutolewa, mabadiliko yao ya API na matoleo mapya ya programu-jalizi yanahitajika kufanywa.

Unapokuwa na programu-jalizi moja tu au bado wewe ni mwanzilishi wa kujifundisha katika suala hili, unaweza kufanya nakala ya mradi tu, kubadilisha maeneo muhimu ndani yake na kukusanya toleo jipya la programu-jalizi. Ipasavyo, mabadiliko ya baadaye ya kanuni yatajumuisha ongezeko nyingi la gharama za wafanyikazi.

Unapopata uzoefu na ujuzi, utapata njia kadhaa za kurekebisha mchakato huu. Nilitembea kwa njia hii na ninataka kukuambia nilichomaliza na jinsi inavyofaa.

Kwanza, hebu tuangalie njia ambayo ni dhahiri na ambayo nimeitumia kwa muda mrefu.

Viungo vya faili za mradi

Na kufanya kila kitu rahisi, kuona na kueleweka, nitaelezea kila kitu kwa kutumia mfano wa abstract wa maendeleo ya programu-jalizi.

Hebu tufungue Studio ya Visual (Nina toleo la Jumuiya ya 2019. Na ndiyo - kwa Kirusi) na kuunda suluhisho jipya. Hebu tumuite MySuperPluginForRevit

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Tutakuwa tunatengeneza programu-jalizi ya Revit kwa matoleo ya 2015-2020. Kwa hiyo, hebu tuunda mradi mpya katika suluhisho (Maktaba ya Hatari ya Mfumo wa Mtandao) na uiite MySuperPluginForRevit_2015

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Tunahitaji kuongeza viungo kwa API ya Revit. Bila shaka, tunaweza kuongeza viungo kwa faili za ndani (tutahitaji kufunga SDK zote muhimu au matoleo yote ya Revit), lakini tutafuata mara moja njia sahihi na kuunganisha mfuko wa NuGet. Unaweza kupata vifurushi vichache, lakini nitatumia yangu mwenyewe.

Baada ya kuunganisha kifurushi, bonyeza kulia kwenye kipengee "marejeo"na uchague kipengee"Hamisha packages.config hadi PackageReference...Β»

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Ikiwa ghafla wakati huu utaanza kuogopa, kwa sababu kwenye dirisha la mali ya kifurushi hakutakuwa na kitu muhimu "Nakili ndani ya nchi", ambayo kwa hakika tunahitaji kuweka thamani uongo, basi usiogope - nenda kwenye folda na mradi huo, fungua faili na kiendelezi cha .csproj katika kihariri kinachofaa kwako (mimi hutumia Notepad ++) na utafute kiingilio kuhusu kifurushi chetu hapo. Anaonekana hivi sasa:

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

Ongeza mali kwake wakati wa kukimbia. Itageuka kama hii:

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

Sasa, wakati wa kujenga mradi, faili kutoka kwa kifurushi hazitakiliwa kwenye folda ya pato.
Hebu tuende mbali zaidi - hebu tufikirie mara moja kwamba programu-jalizi yetu itatumia kitu kutoka kwa API ya Revit, ambayo imebadilika kwa muda wakati matoleo mapya yametolewa. Kweli, au tunahitaji tu kubadilisha kitu kwenye nambari kulingana na toleo la Revit ambalo tunatengeneza programu-jalizi. Ili kutatua tofauti kama hizo katika nambari, tutatumia alama za ujumuishaji wa masharti. Fungua mali ya mradi, nenda kwenye kichupo cha "Mkutano"na shambani"Nukuu ya mkusanyiko wa masharti"hebu andika R2015.

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Kumbuka kuwa ishara lazima iongezwe kwa usanidi wa Tatua na Toa.

Kweli, tukiwa kwenye dirisha la mali, mara moja tunaenda kwenye kichupo cha "Programu"na shambani"Nafasi ya majina chaguomsingiΒ»ondoa kiambishi _2015ili nafasi yetu ya majina iwe ya ulimwengu wote na huru kwa jina la mkutano:

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Kwa upande wangu, katika bidhaa ya mwisho, programu-jalizi za matoleo yote huwekwa kwenye folda moja, kwa hivyo majina yangu ya mkutano hubaki na kiambishi cha fomu. _20Ρ…Ρ…. Lakini unaweza pia kuondoa kiambishi kutoka kwa jina la kusanyiko ikiwa faili zinapaswa kuwa katika folda tofauti.

Hebu tuende kwenye msimbo wa faili Darasa la1.cs na kuiga nambari fulani hapo, kwa kuzingatia matoleo tofauti 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;
        }
    }
}

Mara moja nilizingatia matoleo yote ya Revit juu ya toleo la 2015 (ambalo lilipatikana wakati wa kuandika) na mara moja nilizingatia uwepo wa alama za mkusanyiko wa masharti, ambazo zinaundwa kwa kutumia template sawa.

Wacha tuendelee kwenye kivutio kikuu. Tunaunda mradi mpya katika suluhisho letu, tu kwa toleo la programu-jalizi ya Revit 2016. Tunarudia hatua zote zilizoelezwa hapo juu, kwa mtiririko huo, kuchukua nafasi ya nambari 2015 na nambari 2016. Lakini faili Darasa la1.cs futa kutoka kwa mradi mpya.

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Faili na nambari inayohitajika - Darasa la1.cs - tayari tunayo na tunahitaji tu kuingiza kiungo kwenye mradi mpya. Kuna njia mbili za kuingiza viungo:

  1. Muda mrefu - bonyeza kulia kwenye mradi na uchague "KuongezaΒ»->Β«Kipengele kilichopo", katika dirisha linalofungua, pata faili inayohitajika na badala ya chaguo "Kuongeza"chagua chaguo"Ongeza kama muunganishoΒ»

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

  1. Mufupi - moja kwa moja kwenye kichunguzi cha suluhisho, chagua faili inayotaka (au hata faili, au hata folda nzima) na uiburute kwenye mradi mpya huku ukishikilia kitufe cha Alt. Unapoburuta, utaona kwamba unapobonyeza kitufe cha Alt, kishale cha kipanya kitabadilika kutoka ishara ya kuongeza hadi mshale.
    UPS: Nilifanya machafuko kidogo katika aya hii - kuhamisha faili kadhaa unapaswa kushikilia Shift + Alt!

Baada ya kutekeleza utaratibu, tutakuwa na faili katika mradi wa pili Darasa la1.cs na ikoni inayolingana (mshale wa bluu):

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Wakati wa kuhariri msimbo kwenye dirisha la kihariri, unaweza pia kuchagua muktadha wa mradi wa kuonyesha msimbo, ambao utakuruhusu kuona msimbo ukihaririwa chini ya alama tofauti za ujumuishaji wa masharti:

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Tunaunda miradi mingine yote (2017-2020) kwa kutumia mpango huu. Udukuzi wa maisha - ikiwa utaburuta faili kwenye Kichunguzi cha Suluhisho sio kutoka kwa mradi wa msingi, lakini kutoka kwa mradi ambapo tayari zimeingizwa kama kiunga, basi sio lazima ushikilie kitufe cha Alt!

Chaguo lililoelezewa ni nzuri kabisa hadi wakati wa kuongeza toleo jipya la programu-jalizi au hadi wakati wa kuongeza faili mpya kwenye mradi - yote haya yanakuwa ya kuchosha sana. Na hivi majuzi niligundua ghafla jinsi ya kutatua yote na mradi mmoja na tunaendelea na njia ya pili

Uchawi wa usanidi

Baada ya kumaliza kusoma hapa, unaweza kusema kwa mshangao, β€œKwa nini ulieleza njia ya kwanza, ikiwa makala inakaribia ya pili mara moja?!” Na nilielezea kila kitu ili kuifanya iwe wazi kwa nini tunahitaji alama za ujumuishaji wa masharti na ni mahali gani miradi yetu inatofautiana. Na sasa inakuwa wazi kwetu ni tofauti gani katika miradi tunayohitaji kutekeleza, na kuacha mradi mmoja tu.

Na kufanya kila kitu kuwa wazi zaidi, hatutaunda mradi mpya, lakini tutafanya mabadiliko kwa mradi wetu wa sasa ulioundwa kwa njia ya kwanza.

Kwa hiyo, kwanza kabisa, tunaondoa miradi yote kutoka kwa suluhisho isipokuwa moja kuu (iliyo na faili moja kwa moja). Wale. miradi ya matoleo 2016-2020. Fungua folda na suluhisho na ufute folda za miradi hii huko.

Tumebakiza mradi mmoja katika uamuzi wetu - MySuperPluginForRevit_2015. Fungua sifa zake na:

  1. Kwenye kichupo "Programu"ondoa kiambishi kutoka kwa jina la mkusanyiko _2015 (itakuwa wazi kwa nini baadaye)
  2. Kwenye kichupo "MkutanoΒ»ondoa alama ya ujumuishaji wa masharti R2015 kutoka kwa uwanja unaolingana

Kumbuka: toleo la hivi punde la Visual Studio lina hitilafu - alama za ujumuishaji za masharti hazionyeshwa kwenye dirisha la mali ya mradi, ingawa zinapatikana. Ukikumbana na hitilafu hii, basi unahitaji kuziondoa wewe mwenyewe kutoka kwa faili ya .csproj. Walakini, bado tunapaswa kufanya kazi ndani yake, kwa hivyo soma.

Badilisha jina la mradi katika dirisha la Solution Explorer kwa kuondoa kiambishi _2015 na kisha uondoe mradi kutoka kwa suluhisho. Hii ni muhimu ili kudumisha utaratibu na hisia za wapenda ukamilifu! Tunafungua folda ya suluhisho letu, badilisha jina la folda ya mradi huko kwa njia ile ile na upakie mradi tena kwenye suluhisho.

Fungua meneja wa usanidi. usanidi wa Marekani Achilia kwa kanuni, haitahitajika, kwa hiyo tunaifuta. Tunaunda usanidi mpya na majina ambayo tayari yanajulikana kwetu R2015, R2016, ..., R2020. Kumbuka kuwa hauitaji kunakili mipangilio kutoka kwa usanidi mwingine na hauitaji kuunda usanidi wa mradi:

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Nenda kwenye folda iliyo na mradi na ufungue faili na kiendelezi cha .csproj katika kihariri kinachokufaa. Kwa njia, unaweza pia kuifungua kwenye Visual Studio - unahitaji kupakua mradi na kisha kitu unachotaka kitakuwa kwenye menyu ya muktadha:

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Kuhariri katika Visual Studio kunapendekezwa hata, kwani kihariri hupatanisha na kuhimizwa.

Katika faili tutaona vipengele PropertyGroup - juu sana ni moja ya jumla, na kisha huja masharti. Vipengele hivi huweka mali ya mradi wakati unajengwa. Kipengele cha kwanza, ambacho hakina masharti, huweka mali ya jumla, na vipengele vilivyo na masharti, ipasavyo, hubadilisha baadhi ya mali kulingana na usanidi.

Nenda kwenye kipengele cha kawaida (cha kwanza). PropertyGroup na angalia mali BungeJina - hili ni jina la mkusanyiko na tunapaswa kuwa nalo bila kiambishi _2015. Ikiwa kuna kiambishi, kisha uiondoe.

Kutafuta kipengele kilicho na hali

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

Hatuhitaji - tunaifuta.

Kipengele kilicho na hali

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

itahitajika kufanya kazi katika hatua ya ukuzaji wa kanuni na utatuzi. Unaweza kubadilisha sifa zake ili kuendana na mahitaji yako - weka njia tofauti za pato, badilisha alama za ujumuishaji wa masharti, n.k.

Sasa hebu tuunde vipengele vipya PropertyGroup kwa usanidi wetu. Katika vitu hivi tunahitaji tu kuweka mali nne:

  • Njia ya Pato - folda ya pato. Niliweka dhamana ya msingi binR20xx
  • DefineConstants - alama za mkusanyiko wa masharti. Thamani inapaswa kubainishwa TRACE;R20Ρ…Ρ…
  • TargetFrameworkVersion - toleo la jukwaa. Matoleo tofauti ya API ya Revit yanahitaji mifumo tofauti kubainishwa.
  • BungeJina - jina la kusanyiko (yaani jina la faili). Unaweza kuandika jina halisi la kusanyiko, lakini kwa matumizi mengi ninapendekeza kuandika thamani $(AssemblyName)_20Ρ…Ρ…. Ili kufanya hivyo, hapo awali tuliondoa kiambishi kutoka kwa jina la kusanyiko

Kipengele muhimu zaidi cha vipengele hivi vyote ni kwamba vinaweza kunakiliwa katika miradi mingine bila kubadilisha kabisa. Baadaye katika makala nitaambatisha yaliyomo yote ya faili ya .csproj.

Sawa, tumegundua mali ya mradi - sio ngumu. Lakini nini cha kufanya na maktaba za programu-jalizi (vifurushi vya NuGet). Tukiangalia zaidi, tutaona kwamba maktaba zilizojumuishwa zimeainishwa katika vipengele Kikundi cha Bidhaa. Lakini bahati mbaya - kipengele hiki kinasindika hali kama kipengele PropertyGroup. Labda hii ni shida ya Visual Studio, lakini ikiwa utataja vitu kadhaa Kikundi cha Bidhaa na hali ya usanidi, na ingiza viungo tofauti kwa vifurushi vya NuGet ndani, kisha unapobadilisha usanidi, vifurushi vyote vilivyoainishwa vimeunganishwa kwenye mradi.

Kipengele kinakuja kwa msaada wetu Kuchagua, ambayo inafanya kazi kulingana na mantiki yetu ya kawaida ikiwa-basi-kingine.

Kutumia kipengele Kuchagua, tunaweka vifurushi tofauti vya NuGet kwa usanidi tofauti:

Yaliyomo yote 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>

Tafadhali kumbuka kuwa katika moja ya masharti nilielezea usanidi mbili kupitia AU. Kwa njia hii kifurushi kinachohitajika kitaunganishwa wakati wa usanidi Dhibiti.

Na hapa tuna karibu kila kitu kikamilifu. Tunapakia mradi nyuma, kuwezesha usanidi tunaohitaji, piga kipengee " kwenye menyu ya muktadha wa suluhisho (sio mradi)Rejesha vifurushi vyote vya NuGet"na tunaona jinsi vifurushi vyetu vinabadilika.

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Na katika hatua hii nilifika mwisho - ili kukusanya usanidi wote mara moja, tunaweza kutumia mkusanyiko wa kundi (menu "MkutanoΒ»->Β«Uundaji wa kundi"), lakini wakati wa kubadilisha usanidi, vifurushi hazirejeshwa kiatomati. Na wakati wa kukusanya mradi, hii pia haifanyiki, ingawa, kwa nadharia, inapaswa. Sijapata suluhisho la shida hii kwa kutumia njia za kawaida. Na uwezekano mkubwa huu pia ni mdudu wa Visual Studio.

Kwa hiyo, kwa ajili ya mkusanyiko wa kundi, iliamuliwa kutumia mfumo maalum wa kusanyiko wa otomatiki nuke. Kwa kweli sikutaka hii kwa sababu nadhani inazidi katika suala la ukuzaji wa programu-jalizi, lakini kwa sasa sioni suluhisho lingine lolote. Na kwa swali "Kwa nini Nuke?" Jibu ni rahisi - tunaitumia kazini.

Kwa hivyo, nenda kwenye folda ya suluhisho letu (sio mradi), ushikilie ufunguo Kuhama na ubonyeze kulia kwenye nafasi tupu kwenye folda - kwenye menyu ya muktadha chagua kitu "Fungua dirisha la PowerShell hapa'.

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Ikiwa huna imewekwa nuke, kisha kwanza uandike amri

dotnet tool install Nuke.GlobalTool –global

Sasa andika amri nuke na utaulizwa kusanidi nuke kwa mradi wa sasa. Sijui jinsi ya kuandika hii kwa usahihi zaidi katika Kirusi - kwa Kiingereza itaandikwa Haikuweza kupata faili ya .nuke. Je, ungependa kusanidi muundo? [y/n]

Bonyeza kitufe cha Y na kisha kutakuwa na vipengee vya mipangilio ya moja kwa moja. Tunahitaji chaguo rahisi kutumia MSBuild, kwa hivyo tunajibu kama kwenye picha ya skrini:

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Hebu tuende kwenye Visual Studio, ambayo itatuhimiza kupakia upya suluhisho, kwa kuwa mradi mpya umeongezwa kwake. Tunapakia tena suluhisho na kuona kwamba tuna mradi kujenga ambayo tunavutiwa na faili moja tu - Build.cs

Tunatengeneza mradi mmoja wa programu-jalizi na mkusanyo wa matoleo tofauti ya Revit/AutoCAD

Fungua faili hii na uandike hati ili kuunda mradi kwa usanidi wote. Kweli, au tumia hati yangu, ambayo unaweza kuhariri ili kuendana na mahitaji yako:

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

Tunarudi kwenye dirisha la PowerShell na kuandika amri tena nuke (unaweza kuandika amri nuke ikionyesha kinachohitajika Lengo. Lakini tuna moja Lengo, ambayo inaendeshwa kwa chaguo-msingi). Baada ya kubonyeza kitufe cha Ingiza, tutahisi kama wavamizi halisi, kwa sababu, kama katika filamu, mradi wetu utakusanywa kiotomatiki kwa usanidi tofauti.

Kwa njia, unaweza kutumia PowerShell moja kwa moja kutoka Visual Studio (menu "ViewΒ»->Β«Dirisha zingineΒ»->Β«Kidhibiti cha Kifurushi cha Console"), lakini kila kitu kitakuwa katika nyeusi na nyeupe, ambayo si rahisi sana.

Hii inahitimisha makala yangu. Nina hakika kuwa unaweza kujua chaguo la AutoCAD mwenyewe. Natumaini kwamba nyenzo zilizowasilishwa hapa zitapata "wateja" wake.

Asante!

Chanzo: mapenzi.com

Kuongeza maoni