Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Mgbe ị na-emepụta plugins maka ngwa CAD (n'ọnọdụ m ndị a bụ AutoCAD, Revit na Renga) ka oge na-aga, otu nsogbu na-apụta - a na-ahapụ ụdị mmemme ọhụrụ, mgbanwe API ha na nsụgharị ọhụrụ nke plugins kwesịrị ime.

Mgbe ị nwere naanị otu ngwa mgbakwunye ma ọ bụ na ị ka bụ onye mbido nke kụziri onwe ya n'okwu a, ị nwere ike ịme otu ọrụ ahụ, gbanwee ebe ndị dị mkpa na ya wee kpokọta ụdị ngwa mgbakwunye ọhụrụ. N'ihi ya, mgbanwe ndị na-esote na koodu ahụ ga-ebute mmụba dị ukwuu na ụgwọ ọrụ.

Ka ị na-enweta ahụmịhe na ihe ọmụma, ị ga-ahụ ọtụtụ ụzọ iji megharịa usoro a. M jere ije n'ụzọ a ma achọrọ m ịgwa gị ihe m kwụsịrị na otú ọ si adaba.

Nke mbụ, ka anyị leba anya na usoro doro anya na nke m jiworo ogologo oge.

Njikọ na faịlụ oru ngo

Na iji mee ka ihe niile dị mfe, anya na nghọta, m ga-akọwa ihe niile site na iji ihe atụ nkịtị nke mmepe ngwa mgbakwunye.

Ka anyị mepee Visual Studio (Enwere m ụdị Community 2019. Na ee - na Russian) ma mepụta ngwọta ọhụrụ. Ka anyị kpọọ ya MySuperPluginForRevit

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Anyị ga na-eme ngwa mgbakwunye maka Revit maka ụdị 2015-2020. Ya mere, ka anyị mepụta ọrụ ọhụrụ na ngwọta (Net Framework Class Library) ma kpọọ ya MySuperPluginForRevit_2015

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Anyị kwesịrị ịgbakwunye njikọ na Revit API. N'ezie, anyị nwere ike itinye njikọ na faịlụ mpaghara (anyị ga-achọ ịwụnye SDK niile dị mkpa ma ọ bụ ụdị Revit niile), mana anyị ga-agbaso ụzọ ziri ezi ozugbo wee jikọọ ngwugwu NuGet. Ị nwere ike ịchọta ngwugwu ole na ole, mana m ga-eji nke m.

Mgbe ị jikọtara ngwugwu ahụ, pịa aka nri na ihe ahụ "zoro"ma họrọ ihe"Bugharịa ngwugwu.config na PackageReference...»

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Ọ bụrụ na mberede n'oge a ị na-amalite ịtụ ụjọ, n'ihi na na ngwugwu akụrụngwa window agaghị enwe ihe dị mkpa "Detuo na mpaghara", nke anyị kwesịrị ịtọba uru ụgha, mgbe ahụ, atụla ụjọ - gaa na nchekwa na ọrụ ahụ, mepee faịlụ ahụ na ndọtị .csproj na nchịkọta akụkọ dị mma maka gị (M na-eji Notepad ++) wee chọta ntinye gbasara ngwugwu anyị n'ebe ahụ. Ọ dị ka nke a ugbu a:

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

Tinye ihe onwunwe na ya oge ojiri gaa. Ọ ga-adị ka nke a:

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

Ugbu a, mgbe ị na-arụ ọrụ, faịlụ ndị sitere na ngwugwu agaghị edepụta ya na folda mmepụta.
Ka anyị gaa n'ihu - ka anyị chee ozugbo na ngwa mgbakwunye anyị ga-eji ihe sitere na Revit API, nke gbanwere ka oge na-aga mgbe ewepụtara ụdị ọhụrụ. Ọ dị mma, ma ọ bụ naanị anyị kwesịrị ịgbanwe ihe dị na koodu dabere na ụdị Revit nke anyị na-eme ngwa mgbakwunye. Iji dozie ndịiche dị otú ahụ na koodu, anyị ga-eji akara nchịkọta ọnọdụ. Mepee akụrụngwa ọrụ, gaa na taabụ "Mgbakọ"na n'ọgbọ"Ndekọ mkpokọta ọnọdụ"ka anyị dee R2015.

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Rịba ama na a ga-agbakwunye akara ngosi maka ma nhazi nbipu na mwepụta.

Ọ dị mma, ka anyị nọ na windo akụrụngwa, anyị na-aga ozugbo na taabụ "Ngwa"na n'ọgbọ"Oghere aha izizi» wepụ suffix _2015ka aha anyị wee bụrụ nke zuru ụwa ọnụ na enweghị aha ọgbakọ:

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

N'ọnọdụ m, na ngwaahịa ikpeazụ, a na-etinye plugins nke ụdị niile n'ime otu nchekwa, yabụ aha ọgbakọ m na-anọgide na suffix nke ụdị. _20хх. Mana ị nwekwara ike wepu suffix na aha mgbakọ ma ọ bụrụ na faịlụ ndị ahụ kwesịrị ịdị na nchekwa dị iche iche.

Ka anyị gaa na koodu faịlụ Klas1.cs ma mee ụfọdụ koodu ebe ahụ, na-eburu n'uche ụdị dị iche iche nke 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;
        }
    }
}

M ozugbo eburu n'uche ụdị ụdị Revit niile dị n'elu ụdị 2015 (nke dị n'oge edere) wee buru n'uche ọnụnọ nke akara nchịkọta ọnọdụ, nke ejiri otu ndebiri mepụta.

Ka anyị gaa n'ihu na isi ihe dị mkpa. Anyị na-emepụta ọrụ ọhụrụ na ngwọta anyị, naanị maka nsụgharị nke ngwa mgbakwunye maka Revit 2016. Anyị na-emegharị usoro niile a kọwara n'elu, n'otu n'otu, dochie nọmba 2015 na nọmba 2016. Ma faịlụ ahụ Klas1.cs ihichapụ na ọhụrụ oru ngo.

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Faịlụ na koodu achọrọ - Klas1.cs - anyị enweelarị ya ma ọ dị anyị mkpa itinye njikọ na ya na ọrụ ọhụrụ. Enwere ụzọ abụọ iji tinye njikọ:

  1. Ogologo – Pịa aka nri na oru ngo wee họrọ“Tinye»->>Ihe dị adị", na mpio mepere emepe, chọta faịlụ achọrọ na kama nhọrọ"Tinye"họrọ nhọrọ"Tinye ka njikọ»

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

  1. Obere - ozugbo na ihe nyocha ihe ngwọta, họrọ faịlụ achọrọ (ma ọ bụ ọbụna faịlụ, ma ọ bụ ọbụna nchekwa niile) wee dọrọ ya na ọrụ ọhụrụ mgbe ị na-ejide igodo Alt. Ka ị na-adọkpụrụ, ị ga-ahụ na mgbe ịpịrị igodo Alt, cursor òké ga-agbanwe site na akara gbakwunyere gaa na akụ.
    Gbasie: Emere m ntakịrị mgbagwoju anya na paragraf a - iji nyefee ọtụtụ faịlụ ị kwesịrị ijide Mgbanwe + Alt!

Mgbe ịmechara usoro ahụ, anyị ga-enwe faịlụ na ọrụ nke abụọ Klas1.cs ya na akara ngosi kwekọrọ (akụ na-acha anụnụ anụnụ):

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Mgbe ị na-edezi koodu na mpio onye ndezi, ị nwekwara ike họrọ ọnọdụ ọrụ iji gosipụta koodu na, nke ga-enye gị ohere ịhụ ka edezi koodu ahụ n'okpuru akara nchịkọta ọnọdụ dị iche iche:

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Anyị na-eji atụmatụ a mepụta ọrụ ndị ọzọ niile (2017-2020). Mbanye anataghị ikike ndụ - ọ bụrụ na ịdọrọ faịlụ na Ngwọta Ngwọta ọ bụghị site na ọrụ ntọala, mana site na oru ngo ebe etinyegoro ha dị ka njikọ, ịkwesighi ijide igodo Alt!

Nhọrọ a kọwara dị mma ruo oge ịgbakwunye ụdị ngwa mgbakwunye ọhụrụ ma ọ bụ ruo oge ịgbakwunye faịlụ ọhụrụ na ọrụ ahụ - ihe a niile na-agwụ ike. Na nso nso a m na mberede ghọtara na mberede ka esi edozi ya na otu oru ngo ma anyị na-aga n'ihu na usoro nke abụọ

Anwansi nke nhazi

N'ịbụ onye gụchara ebe a, ị nwere ike ịsị, "Gịnị mere i ji kọwaa usoro nke mbụ, ma ọ bụrụ na isiokwu ahụ bụ ozugbo gbasara nke abụọ?!" Akọwara m ihe niile iji mee ka ọ dokwuo anya ihe kpatara anyị ji chọọ akara nchịkọta ọnọdụ yana ebe ọrụ anyị dị iche. Ma ugbu a, ọ bịara doo anyị anya kpọmkwem ihe ọdịiche dị na ọrụ anyị kwesịrị ime, na-ahapụ naanị otu ọrụ.

Na iji mee ka ihe niile pụta ìhè, anyị agaghị emepụta ọrụ ọhụrụ, ma anyị ga-eme mgbanwe na ọrụ anyị ugbu a nke e kere na mbụ.

Ya mere, nke mbụ, anyị na-ewepụ ọrụ niile site na ngwọta ma e wezụga nke bụ isi (nwere faịlụ ozugbo). Ndị ahụ. oru ngo maka ụdị 2016-2020. Mepee folda na ngwọta ma hichapụ folda nke ọrụ ndị a n'ebe ahụ.

Anyị nwere otu ọrụ fọdụrụ na mkpebi anyị - MySuperPluginForRevit_2015. Mepee akụrụngwa ya na:

  1. Na taabụ "Ngwa"wepu suffix na aha ọgbakọ _2015 (ọ ga-edo anya ihe kpatara ya ma emechaa)
  2. Na taabụ "Mgbakọ» wepụ akara nchịkọta ọnọdụ R2015 site na mpaghara kwekọrọ

Mara: ụdị Visual Studio kachasị ọhụrụ nwere ahụhụ - akara nchikota ọnọdụ anaghị egosipụta na mpio njirimara ọrụ, n'agbanyeghị na ha dị. Ọ bụrụ na ị nweta glitch a, ị ga-eji aka wepụ ha na faịlụ .csproj. Agbanyeghị, anyị ka ga-arụ ọrụ na ya, yabụ gụọ n'ihu.

Kpọgharia aha oru ngo a na windo Ngwọta Explorer site na iwepu suffix _2015 wee wepụ ọrụ ahụ na ngwọta. Nke a dị mkpa iji nọgide na-enwe usoro na mmetụta nke ndị na-achọkarị izu okè! Anyị na-emepe folda nke ngwọta anyị, nyegharịa folda ọrụ ahụ aha n'otu ụzọ ahụ ma tinyeghachi ọrụ ahụ na ngwọta.

Mepee njikwa nhazi. Nhazi US ntọhapụ na ụkpụrụ, ọ gaghị adị mkpa, ya mere anyị na-ehichapụ ya. Anyị na-emepụta nhazi ọhụrụ nwere aha ndị maralarị anyị R2015, R2016, ..., R2020. Rịba ama na ịkwesighi idetu ntọala site na nhazi ndị ọzọ na ịchọghị ịmepụta nhazi ọrụ:

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Gaa na nchekwa na oru ngo ma mepee faịlụ na ndọtị .csproj na nchịkọta akụkọ dị mma maka gị. Site n'ụzọ, ị nwekwara ike imepe ya na Visual Studio - ịkwesịrị ibudata ọrụ ahụ wee bụrụ ihe achọrọ ga-adị na menu onodu:

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Ịdezi na Visual Studio ka mma, ebe ọ bụ na onye nchịkọta akụkọ na-ahazi ma na-akpali.

Na faịlụ anyị ga-ahụ ihe ndị ahụ Otu ihe onwunwe - n'elu bụ nke izugbe, wee bịa na ọnọdụ. Ihe ndị a na-edozi njirimara nke ọrụ ahụ mgbe arụrụ ya. Ihe mbụ, nke na-enweghị ọnọdụ, na-edozi ihe ndị dị n'ozuzu, na ihe ndị nwere ọnọdụ, ya mere, gbanwee ụfọdụ ihe dabere na nhazi.

Gaa na ihe nkịtị (nke mbụ). Otu ihe onwunwe ma lee ihe onwunwe anya Aha Mgbakọ - nke a bụ aha ọgbakọ na anyị kwesịrị inwe ya na-enweghị nkwụsị _2015. Ọ bụrụ na enwere suffix, wepụ ya.

Ịchọta ihe nwere ọnọdụ

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

Anyị achọghị ya - anyị na-ehichapụ ya.

Ihe nwere ọnọdụ

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

ga-adị mkpa ka ọ rụọ ọrụ na ogbo nke koodu mmepe na debugging. Ị nwere ike ịgbanwe akụrụngwa ya ka o kwekọọ mkpa gị - tọọ ụzọ mmepụta dị iche iche, gbanwee akara nchịkọta ọnọdụ, wdg.

Ugbu a ka anyị mepụta ihe ọhụrụ Otu ihe onwunwe maka nhazi anyị. N'ime ihe ndị a, anyị kwesịrị ịtọ ntọala anọ:

  • Ụzọ ọpụpụ – mmepụta nchekwa. Etinyere m uru ndabara binR20xx
  • KọwaaConstant – akara nchikota ọnọdụ. Ekwesịrị ịkọwa ọnụ ahịa ya TRACE; R20хх
  • TargetFrameworkVersion – ụdị ikpo okwu. Ụdị dị iche iche nke Revit API chọrọ ka akọwapụta nyiwe dị iche iche.
  • Aha Mgbakọ - aha mgbakọ (ntụgharị aha faịlụ). Ị nwere ike dee kpọmkwem aha mgbakọ ahụ, ma maka ntụgharị m na-akwado ịde uru $(AssemblyAha)_20хх. Iji mee nke a, anyị ewepụburu suffix na aha mgbakọ ahụ

Akụkụ kachasị mkpa nke ihe ndị a niile bụ na enwere ike depụtaghachi ha n'ọrụ ndị ọzọ na-agbanweghị ha ma ọlị. Mgbe e mesịrị na isiokwu m ga-agbakwunye ọdịnaya niile nke faịlụ .csproj.

Ọ dị mma, anyị achọpụtala akụrụngwa nke ọrụ ahụ - ọ naghị esiri ike. Mana ihe ị ga-eme na ọba akwụkwọ nkwụnye (NuGet ngwugwu). Ọ bụrụ na anyị elebakwuo anya, anyị ga-ahụ na a na-akọwapụta ụlọ akwụkwọ ndị agụnyere na ihe ndị ahụ Otu ihe. Ma chioma ọjọọ - nke a mmewere na-ahazi ọnọdụ ezighi ezi dị ka mmewere Otu ihe onwunwe. Ikekwe nke a bụ ọbụna Visual Studio glitch, ma ọ bụrụ na ị ezipụta ọtụtụ ihe Otu ihe na ọnọdụ nhazi, ma tinye njikọ dị iche iche na ngwugwu NuGet n'ime, mgbe ahụ mgbe ị gbanwere nhazi ahụ, ngwugwu niile akọwapụtara na-ejikọta na ọrụ ahụ.

Ihe mmewere na-abịara anyị aka họrọ, nke na-arụ ọrụ dị ka mgbagha anyị na-emebu ma ọ bụrụ na-ahụ-ọzọ.

Iji mmewere họrọ, anyị na-edozi ngwugwu NuGet dị iche iche maka nhazi dị iche iche:

Ihe niile dị n'ime 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>

Biko mara na n'otu n'ime ọnọdụ m akọwapụtara nhazi abụọ site na MA ọ bụ. N'ụzọ dị otú a, a ga-ejikọta ngwugwu achọrọ n'oge nhazi Debug.

Na ebe a anyị nwere ihe fọrọ nke nta ka ọ bụrụ ihe zuru oke. Anyị na-ebughachi ọrụ ahụ azụ, mee ka nhazi ahụ dị anyị mkpa, kpọọ ihe ahụ "na menu onodu nke ngwọta (ọ bụghị ọrụ ahụ)Weghachite ngwugwu NuGet niile"anyị na-ahụkwa ka ngwugwu anyị si agbanwe.

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Na n'oge a, m bịara na njedebe nwụrụ anwụ - iji nakọta nhazi niile n'otu oge, anyị nwere ike iji mgbakọ batch (menu "Mgbakọ»->>Nrụpụta ogbe"), mana mgbe ị na-agbanwe nhazi, ngwugwu anaghị eweghachi ozugbo. Na mgbe ị na-achịkọta ọrụ ahụ, nke a anaghịkwa eme, ọ bụ ezie na, na tiori, ọ kwesịrị. Achọtaghị m ngwọta maka nsogbu a site na iji usoro ọkọlọtọ. Ma eleghị anya nke a bụkwa ahụhụ Studio Visual.

Ya mere, maka mgbakọ batch, e kpebiri iji usoro mgbakọ pụrụ iche na-akpaghị aka Nuke. M n'ezie achọghị nke a n'ihi na m na-eche na ọ bụ overkill na okwu nke plugin mmepe, ma n'oge m na-adịghị ahụ ihe ọ bụla ọzọ ngwọta. Na ajụjụ a "Gịnị kpatara Nuke?" Azịza ya dị mfe - anyị na-eji ya na-arụ ọrụ.

Ya mere, gaa na nchekwa nke ngwọta anyị (ọ bụghị ọrụ ahụ), jide igodo ahụ Mgbanwe wee pịa aka nri na oghere efu na folda - na menu onodu, họrọ ihe ahụ "Mepee windo PowerShell ebe a".

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Ọ bụrụ na ị naghị etinye ya nuke, wee buru ụzọ dee iwu ahụ

dotnet tool install Nuke.GlobalTool –global

Ugbu a dee iwu nuke na a ga-akpali gị hazie nuke maka oru ngo nke ugbua. Amaghị m ka esi ede nke a nke ọma na Russian - na Bekee a ga-ede ya Enweghị ike ịchọta faịlụ .nuke. Ịchọrọ ịhazi ihe nrụpụta? [y/n]

Pịa igodo Y mgbe ahụ a ga-enwe ihe ntọala ozugbo. Anyị chọrọ nhọrọ kachasị mfe iji MSBuild, yabụ anyị na-aza dịka na nseta ihuenyo:

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Ka anyị gaa na Visual Studio, nke ga-akpali anyị ibugharị ihe ngwọta ahụ, ebe ọ bụ na agbakwunyere ọrụ ọhụrụ na ya. Anyị na-ebughachi ihe ngwọta ahụ ma hụ na anyị nwere ọrụ -ewu nke anyị nwere mmasị na naanị otu faịlụ - Mee.cs

Anyị na-eme otu ngwa mgbakwunye nwere mkpokọta maka ụdị dị iche iche nke Revit/AutoCAD

Mepee faịlụ a wee dee edemede iji wuo ọrụ maka nhazi niile. Ọ dị mma, ma ọ bụ jiri edemede m, nke ị nwere ike dezie ka ọ dabara na mkpa gị:

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

Anyị na-alaghachi na windo PowerShell wee dee iwu ahụ ọzọ nuke (ị nwere ike dee iwu ahụ nuke na-egosi ihe achọrọ Target. Ma anyị nwere otu Target, nke na-agba ọsọ na ndabara). Mgbe ịpịchara igodo Tinye, anyị ga-adị ka ezigbo ndị hackers, n'ihi na, dị ka ihe nkiri, a ga-ejikọta ọrụ anyị na-akpaghị aka maka nhazi dị iche iche.

Site n'ụzọ, ị nwere ike iji PowerShell ozugbo site na Visual Studio (menu"echiche»->>Window ndị ọzọ»->>Ogwe njikwa ngwugwu"), ma ihe niile ga-adị na oji na ọcha, nke na-adịghị mma.

Nke a mechiri akụkọ m. Eji m n'aka na ị nwere ike ịchọta nhọrọ maka AutoCAD n'onwe gị. Enwere m olileanya na ihe e gosipụtara ebe a ga-achọta "ndị ahịa" ya.

Gwa anyị ihe ị ga-eme!

isi: www.habr.com

Tinye a comment