Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Lokacin haɓaka plugins don aikace-aikacen CAD (a wurina Waɗannan su ne AutoCAD, Revit da Renga) a kan lokaci, matsala ɗaya ta bayyana - ana fitar da sabbin nau'ikan shirye-shirye, canje-canjen API ɗin su da sabbin nau'ikan plugins suna buƙatar yin.

Lokacin da kuke da plugin guda ɗaya kawai ko kuma har yanzu kun kasance mafari mai koyar da kai a cikin wannan al'amari, zaku iya yin kwafin aikin kawai, canza wuraren da ake buƙata a ciki kuma ku haɗa sabon sigar plugin ɗin. Saboda haka, canje-canje masu zuwa ga lambar za su haifar da haɓaka da yawa a farashin aiki.

Yayin da kuke samun gogewa da ilimi, zaku sami hanyoyi da yawa don sarrafa wannan tsari. Na bi wannan hanyar kuma ina so in gaya muku abin da na ƙare da kuma yadda ya dace.

Da farko, bari mu dubi hanyar da take a fili kuma wacce na daɗe da amfani da ita.

Hanyoyin haɗi zuwa fayilolin aikin

Kuma don yin komai mai sauƙi, gani da fahimta, zan kwatanta komai ta amfani da misali mai ƙima na haɓaka plugin.

Bari mu buɗe Kayayyakin Kayayyakin Kayayyakin Kayayyakin (Ina da sigar Community 2019. Kuma a - cikin Rashanci) kuma ƙirƙirar sabon bayani. Mu kira shi MySuperPluginForRevit

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Za mu yi plugin don Revit don nau'ikan 2015-2020. Sabili da haka, bari mu ƙirƙiri sabon aikin a cikin mafita (Labarun Ƙirar Ƙarfafawa) kuma mu kira shi MySuperPluginForRevit_2015

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Muna buƙatar ƙara hanyoyin haɗi zuwa API na Revit. Tabbas, zamu iya ƙara hanyoyin haɗi zuwa fayilolin gida (za mu buƙaci shigar da duk SDK ɗin da ake buƙata ko duk nau'ikan Revit), amma nan da nan za mu bi hanya madaidaiciya kuma mu haɗa kunshin NuGet. Kuna iya samun fakiti kaɗan kaɗan, amma zan yi amfani da nawa.

Bayan haɗa kunshin, danna dama akan abun "nassoshi"sannan ka zabi abu"Matsar da packs.config zuwa PackageReference...»

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Idan ba zato ba tsammani a wannan lokacin kun fara firgita, saboda a cikin taga kayan kunshin ba za a sami wani abu mai mahimmanci ba "Kwafi a gida", wanda tabbas muna buƙatar saita zuwa ƙimar arya, to, kada ku firgita - je zuwa babban fayil tare da aikin, buɗe fayil ɗin tare da tsawo na .csproj a cikin editan da ya dace da ku (Ina amfani da Notepad ++) kuma sami shigarwa game da kunshin mu a can. Ta kasance kamar haka a yanzu:

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

Ƙara dukiya gare shi lokacin gudu. Zai kasance kamar haka:

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

Yanzu, lokacin gina aikin, fayiloli daga fakitin ba za a kwafi zuwa babban fayil ɗin fitarwa ba.
Bari mu ci gaba - bari mu yi tunanin nan da nan cewa plugin ɗin namu zai yi amfani da wani abu daga Revit API, wanda ya canza tsawon lokaci lokacin da aka fitar da sabbin nau'ikan. To, ko kawai muna buƙatar canza wani abu a cikin lambar dangane da sigar Revit wanda muke yin plugin ɗin. Don warware irin waɗannan bambance-bambance a cikin lamba, za mu yi amfani da alamomin haɗar yanayi. Bude kayan aikin, je zuwa shafin "Majalisar"kuma a cikin filin"Ƙididdigar haɗaɗɗiyar sharaɗi"mu rubuta R2015.

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Lura cewa dole ne a ƙara alamar don duka daidaitawar gyara da Sakin.

To, yayin da muke cikin taga kaddarorin, nan da nan za mu je shafin "Aikace-aikacen"kuma a cikin filin"Tsohuwar sarari suna» cire kari _2015domin sunan mu ya zama na kowa da kowa kuma ba tare da sunan majalisa ba:

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

A cikin yanayina, a cikin samfur na ƙarshe, ana saka plugins na duk nau'ikan a cikin babban fayil guda, don haka sunayen tarona ya kasance tare da maƙasudin fom. _20х. Amma kuma kuna iya cire suffix daga sunan taron idan fayilolin ya kamata su kasance a cikin manyan fayiloli daban-daban.

Bari mu je ga lambar fayil Darasi 1.cs kuma a kwaikwayi wasu lambobi a wurin, la'akari da nau'ikan Revit daban-daban:

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

Nan da nan na yi la'akari da duk nau'ikan Revit sama da sigar 2015 (waɗanda suke samuwa a lokacin rubuce-rubuce) kuma nan da nan na yi la'akari da kasancewar alamun haɗaɗɗiyar yanayi, waɗanda aka ƙirƙira ta amfani da samfuri iri ɗaya.

Bari mu ci gaba zuwa babban abin haskakawa. Muna ƙirƙirar sabon aikin a cikin maganinmu, kawai don sigar plugin ɗin don Revit 2016. Muna maimaita duk matakan da aka bayyana a sama, bi da bi, maye gurbin lambar 2015 tare da lambar 2016. Amma fayil ɗin Darasi 1.cs share daga sabon aikin.

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Fayil tare da lambar da ake buƙata - Darasi 1.cs - mun riga mun sami shi kuma muna buƙatar kawai saka hanyar haɗi zuwa gare shi a cikin sabon aikin. Akwai hanyoyi guda biyu don saka mahaɗa:

  1. Doguwa - danna dama akan aikin kuma zaɓi "Add»->>Abubuwan da ke wanzu", a cikin taga da ya buɗe, nemo fayil ɗin da ake buƙata kuma maimakon zaɓi"Add"zabi zabin"Ƙara azaman haɗi»

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

  1. Short - kai tsaye a cikin mai binciken bayani, zaɓi fayil ɗin da ake so (ko ma fayiloli, ko ma manyan manyan fayiloli) kuma ja shi cikin sabon aikin yayin riƙe maɓallin Alt. Yayin da kake ja, za ka ga cewa lokacin da ka danna maɓallin Alt, siginan linzamin kwamfuta zai canza daga alamar ƙari zuwa kibiya.
    UPS: Na yi ɗan ruɗani a cikin wannan sakin layi - don canja wurin fayiloli da yawa yakamata ku riƙe ƙasa Canji + Alt!

Bayan aiwatar da hanyar, za mu sami fayil a cikin aikin na biyu Darasi 1.cs tare da gunkin daidai (kibiya mai shuɗi):

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Lokacin gyara lambar a cikin taga edita, Hakanan zaka iya zaɓar wace mahallin aikin don nuna lambar a ciki, wanda zai ba ka damar ganin lambar ana gyara ta ƙarƙashin alamomin harhada sharaɗi daban-daban:

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Muna ƙirƙirar duk sauran ayyukan (2017-2020) ta amfani da wannan makirci. Hack Life - idan ka ja fayiloli a cikin Maganin Magani ba daga aikin tushe ba, amma daga aikin da aka riga aka saka su azaman hanyar haɗi, to ba lallai ne ka riƙe maɓallin Alt ba!

Zaɓin da aka bayyana yana da kyau har zuwa lokacin ƙara sabon sigar plugin ɗin ko har zuwa lokacin ƙara sabbin fayiloli zuwa aikin - duk wannan ya zama mai wahala sosai. Kuma kwanan nan ba zato ba tsammani na gane yadda za a warware shi duka tare da aiki ɗaya kuma muna ci gaba zuwa hanya ta biyu

Sihiri na daidaitawa

Bayan kammala karatun nan, kuna iya cewa, "Me ya sa kuka kwatanta hanyar farko, idan labarin ya kasance game da na biyu nan da nan?!" Kuma na bayyana komai don bayyana dalilin da yasa muke buƙatar alamomin harhada sharuddan da kuma wuraren da ayyukanmu suka bambanta. Kuma yanzu ya bayyana mana ainihin bambance-bambance a cikin ayyukan da muke buƙatar aiwatarwa, barin aiki ɗaya kawai.

Kuma don tabbatar da komai a bayyane, ba za mu ƙirƙiri sabon aikin ba, amma za mu yi canje-canje ga aikinmu na yanzu da aka ƙirƙira ta hanyar farko.

Don haka, da farko, muna cire duk ayyukan daga mafita sai dai babban (wanda ya ƙunshi fayiloli kai tsaye). Wadancan. ayyuka don sigogin 2016-2020. Bude babban fayil ɗin tare da bayani kuma share manyan fayilolin waɗannan ayyukan a can.

Muna da aikin daya rage a cikin shawararmu - MySuperPluginForRevit_2015. Bude kaddarorin sa kuma:

  1. Na tab"Aikace-aikacen"cire suffix daga sunan majalisa _2015 (zai bayyana dalilin da yasa daga baya)
  2. Na tab"Majalisar» Cire alamar tari mai sharadi R2015 daga filin da ya dace

Lura: sabuwar sigar Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Hudu) yana da bug-bug - ba a nuna alamomin haɗar yanayi a cikin taga kayan aikin ba, kodayake suna nan. Idan kun fuskanci wannan kuskuren, to kuna buƙatar cire su da hannu daga fayil ɗin .csproj. Duk da haka, har yanzu dole mu yi aiki a ciki, don haka a ci gaba.

Sake suna aikin a cikin taga Magani Explorer ta hanyar cire suffix _2015 sannan cire aikin daga mafita. Wannan wajibi ne don kiyaye tsari da jin daɗin kamala! Bude babban fayil ɗin maganin mu, sake suna babban fayil ɗin aikin a can kamar yadda kuma a mayar da aikin zuwa cikin bayani.

Bude mai sarrafa tsari. Tsarin Amurka release a ka'ida, ba za a buƙaci ba, don haka muna share shi. Muna ƙirƙira sabbin saiti tare da sunaye waɗanda suka saba mana R2015, R2016,…, R2020. Lura cewa ba kwa buƙatar kwafin saituna daga wasu saitunan kuma ba kwa buƙatar ƙirƙirar saitin aikin:

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Je zuwa babban fayil tare da aikin kuma buɗe fayil ɗin tare da tsawo na .csproj a cikin editan da ya dace da ku. Af, zaku iya buɗe shi a cikin Kayayyakin Kayayyakin Kayayyakin Kayayyakin - kuna buƙatar sauke aikin sannan abin da ake so zai kasance a cikin menu na mahallin:

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Gyara a cikin Kayayyakin Kayayyakin Kayayyakin Kayayyakin Ma'ana ya fi dacewa, tunda editan ya daidaita kuma yana faɗakarwa.

A cikin fayil za mu ga abubuwan Groupungiyar Property – a saman shi ne na gama-gari, sannan ya zo da sharudda. Wadannan abubuwa suna saita kaddarorin aikin lokacin da aka gina shi. Abu na farko, wanda ba tare da sharuɗɗa ba, yana saita kaddarorin gabaɗaya, da abubuwa tare da yanayi, don haka, canza wasu kaddarorin dangane da jeri.

Je zuwa kashi na gama gari (na farko). Groupungiyar Property kuma dubi dukiya Sunan Majalisa - wannan shine sunan majalisa kuma yakamata mu kasance dashi ba tare da kari ba _2015. Idan akwai kari, to a cire shi.

Nemo wani abu mai yanayi

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

Ba mu buƙatar shi - muna share shi.

Element tare da sharadi

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

za a buƙaci yin aiki a mataki na ci gaban code da debugging. Kuna iya canza kaddarorin sa don dacewa da buƙatunku - saita hanyoyin fitarwa daban-daban, canza alamomin tari, da sauransu.

Yanzu bari mu ƙirƙiri sababbin abubuwa Groupungiyar Property don tsarin mu. A cikin waɗannan abubuwan kawai muna buƙatar saita kaddarorin guda huɗu:

  • Hanyar fitarwa – fitarwa fayil. Na saita ƙimar tsoho bin R20xx
  • Ma'anar Constant – alamomin haɗar yanayi. Ya kamata a ƙayyade ƙimar TRAACE;R20хх
  • TargetFrameworkVersion – dandamali version. Daban-daban iri na Revit API suna buƙatar fayyace dandamali daban-daban.
  • Sunan Majalisa - sunan taro (watau sunan fayil). Kuna iya rubuta ainihin sunan taron, amma don haɓakawa Ina ba da shawarar rubuta ƙimar $(AssemblyName)_20хх. Don yin wannan, a baya mun cire suffix daga sunan taron

Mafi mahimmancin fasalin duk waɗannan abubuwan shine cewa ana iya kwafi su cikin wasu ayyuka kawai ba tare da canza su kwata-kwata ba. Daga baya a cikin labarin zan haɗa duk abubuwan da ke cikin fayil ɗin .csproj.

To, mun gano kaddarorin aikin - ba shi da wahala. Amma abin da za a yi da dakunan karatu na toshe (NuGet packages). Idan muka kara dubawa, za mu ga cewa an kayyade ɗakunan karatu da aka haɗa a cikin abubuwan ItemGroup. Amma mummunan sa'a - wannan kashi ba daidai ba yana tafiyar da yanayi a matsayin kashi Groupungiyar Property. Wataƙila wannan ma glitch ne na Kayayyakin Kayayyakin, amma idan kun ƙididdige abubuwa da yawa ItemGroup tare da yanayin daidaitawa, kuma saka hanyoyin haɗi daban-daban zuwa fakitin NuGet a ciki, sannan lokacin da kuka canza saitin, duk fakitin da aka ƙayyade suna da alaƙa da aikin.

Abun ya zo don taimakon mu zabi, wanda ke aiki bisa ga dabaru na yau da kullun idan-to-kuma.

Amfani da kashi zabi, Mun saita fakitin NuGet daban-daban don daidaitawa daban-daban:

Duk abinda ke ciki 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>

Lura cewa a ɗaya daga cikin sharuɗɗan na ƙayyadaddun saiti biyu ta hanyar KO. Ta wannan hanyar za a haɗa kunshin da ake buƙata yayin daidaitawa Debug.

Kuma a nan muna da kusan komai cikakke. Muna ɗaukar aikin baya, kunna tsarin da muke buƙata, kira abu "a cikin mahallin mahallin bayani (ba aikin ba)Mayar da duk fakitin NuGet"kuma muna ganin yadda fakitinmu ke canzawa.

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Kuma a wannan mataki na zo ƙarshen ƙarshe - don tattara duk saitunan lokaci ɗaya, za mu iya amfani da taro taro (menu")Majalisar»->>Gina tsari"), amma lokacin da ake canza saitunan, ba a dawo da fakiti ta atomatik ba. Kuma lokacin da ake hada aikin, wannan kuma baya faruwa, kodayake, a ka'idar, ya kamata. Ban sami mafita ga wannan matsala ta amfani da daidaitattun hanyoyin ba. Kuma mai yuwuwa wannan shima bug ɗin Studio ne na Kayayyakin gani.

Sabili da haka, don taro taro, an yanke shawarar yin amfani da tsarin taro mai sarrafa kansa na musamman Nuke. A zahiri ba na son wannan saboda ina tsammanin yana da wuce gona da iri dangane da ci gaban plugin, amma a halin yanzu ban ga wata mafita ba. Kuma ga tambaya "Me yasa Nuke?" Amsar ita ce mai sauƙi - muna amfani da shi a wurin aiki.

Don haka, je zuwa babban fayil ɗin maganin mu (ba aikin ba), riƙe maɓallin Motsi kuma danna dama akan sarari mara komai a cikin babban fayil - a cikin mahallin menu zaɓi abu "Bude PowerShell taga anan".

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Idan ba a shigar da shi ba nuke, sannan ka fara rubuta umarnin

dotnet tool install Nuke.GlobalTool –global

Yanzu rubuta umarnin nuke kuma za a sa ka saita nuke don aikin na yanzu. Ban san yadda ake rubuta wannan daidai cikin Rashanci ba - a cikin Ingilishi za a rubuta Ba a iya samun fayil ɗin .nuke ba. Kuna son saita gini? [y/n]

Danna maɓallin Y sannan za a sami abubuwan saitunan kai tsaye. Muna buƙatar zaɓi mafi sauƙi ta amfani da MSBuild, don haka mu amsa kamar yadda a cikin screenshot:

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Mu je Visual Studio, wanda zai sa mu sake loda maganin, tunda an kara sabon aiki a ciki. Mun sake loda maganin kuma ga cewa muna da aikin gina wanda muke sha'awar fayil ɗaya kawai - Gina.cs

Muna yin aikin plugin guda ɗaya tare da haɗawa don nau'ikan Revit/AutoCAD daban-daban

Bude wannan fayil ɗin kuma rubuta rubutun don gina aikin don duk saiti. To, ko amfani da rubutuna, wanda zaku iya gyarawa don dacewa da bukatunku:

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

Muna komawa taga PowerShell kuma mu sake rubuta umarnin nuke (zaka iya rubuta umarnin nuke yana nuna abin da ake buƙata Target. Amma muna da daya Target, wanda ke gudana ta hanyar tsoho). Bayan danna maɓallin Shigar, za mu ji kamar hackers na gaske, domin, kamar a cikin fim, aikinmu za a haɗa kai tsaye don daidaitawa daban-daban.

Af, zaku iya amfani da PowerShell kai tsaye daga Studio Visual (menu"view»->>Wasu windows»->>Kunshin Manager Console"), amma duk abin da zai kasance a baki da fari, wanda bai dace sosai ba.

Wannan ya ƙare labarina. Na tabbata zaku iya gano zaɓi don AutoCAD da kanku. Ina fatan abin da aka gabatar a nan zai sami "abokan ciniki".

Na gode da hankali!

source: www.habr.com

Add a comment