A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Nigbati o ba n ṣe agbekalẹ awọn afikun fun awọn ohun elo CAD (ninu ọran mi Iwọnyi jẹ AutoCAD, Revit ati Renga) ni akoko pupọ, iṣoro kan han - awọn ẹya tuntun ti awọn eto ti tu silẹ, awọn ayipada API wọn ati awọn ẹya tuntun ti awọn afikun nilo lati ṣe.

Nigbati o ba ni ohun itanna kan nikan tabi ti o tun jẹ olubere ti ara ẹni ti o kọ ẹkọ ni ọran yii, o le nirọrun ṣe ẹda kan ti iṣẹ akanṣe, yi awọn aaye pataki pada ki o ṣajọ ẹya tuntun ti ohun itanna naa. Nitorinaa, awọn ayipada atẹle si koodu yoo fa ilosoke pupọ ninu awọn idiyele iṣẹ.

Bi o ṣe ni iriri ati imọ, iwọ yoo wa awọn ọna pupọ lati ṣe adaṣe ilana yii. Mo rin ọna yii ati pe Mo fẹ lati sọ fun ọ kini Mo pari pẹlu ati bii o ṣe rọrun.

Ni akọkọ, jẹ ki a wo ọna ti o han gbangba ati eyiti Mo ti lo fun igba pipẹ.

Awọn ọna asopọ si awọn faili ise agbese

Ati lati jẹ ki ohun gbogbo rọrun, wiwo ati oye, Emi yoo ṣe apejuwe ohun gbogbo nipa lilo apẹẹrẹ áljẹbrà ti idagbasoke ohun itanna.

Jẹ ki a ṣii Studio Visual (Mo ni ẹya Community 2019. Ati bẹẹni - ni Russian) ati ṣẹda ojutu tuntun kan. Ẹ jẹ́ ká pè é MySuperPluginForRevit

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

A yoo ṣe ohun itanna kan fun Revit fun awọn ẹya 2015-2020. Nitorinaa, jẹ ki a ṣẹda iṣẹ akanṣe tuntun kan ninu ojutu (Ikawe Apapọ Apapọ Net Framework) ki o pe MySuperPluginForRevit_2015

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

A nilo lati ṣafikun awọn ọna asopọ si API Revit. Nitoribẹẹ, a le ṣafikun awọn ọna asopọ si awọn faili agbegbe (a yoo nilo lati fi sori ẹrọ gbogbo awọn SDK pataki tabi gbogbo awọn ẹya ti Revit), ṣugbọn a yoo tẹle ọna ti o tọ lẹsẹkẹsẹ ati so package NuGet pọ. O le wa awọn idii pupọ, ṣugbọn Emi yoo lo ti ara mi.

Lẹhin ti o so package pọ, tẹ-ọtun lori nkan naa "jo"ki o si yan nkan naa"Gbe packages.config si PackageReference...»

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ti o ba jẹ lojiji ni aaye yii o bẹrẹ si ijaaya, nitori ninu window awọn ohun-ini package kii yoo si nkan pataki “Daakọ ni agbegbe", eyiti a ni pato nilo lati ṣeto si iye naa èké, lẹhinna maṣe bẹru - lọ si folda pẹlu iṣẹ akanṣe, ṣii faili pẹlu itẹsiwaju .csproj ni olootu ti o rọrun fun ọ (Mo lo Notepad ++) ki o wa titẹsi kan nipa package wa nibẹ. O dabi eleyi bayi:

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

Fi ohun-ini kan kun asiko isise. O yoo tan bi eleyi:

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

Bayi, nigba kikọ iṣẹ akanṣe kan, awọn faili lati package kii yoo ṣe daakọ si folda ti o wu jade.
Jẹ ki a lọ siwaju - jẹ ki a ro lẹsẹkẹsẹ pe ohun itanna wa yoo lo ohunkan lati API Revit, eyiti o yipada ni akoko pupọ nigbati awọn ẹya tuntun ti tu silẹ. O dara, tabi a kan nilo lati yi nkan pada ninu koodu da lori ẹya ti Revit fun eyiti a n ṣe ohun itanna naa. Lati yanju iru awọn iyatọ ninu koodu, a yoo lo awọn aami akojọpọ ipo. Ṣii awọn ohun-ini akanṣe, lọ si taabu “Apejọ"ati ni aaye"Aami akopo ni àídájú"jẹ ki a kọ R2015.

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ṣe akiyesi pe aami gbọdọ wa ni afikun fun mejeeji Awọn atunto yokokoro ati Tu silẹ.

O dara, lakoko ti a wa ni window awọn ohun-ini, a lọ lẹsẹkẹsẹ si taabu “Ohun elo"ati ni aaye"Aaye orukọ aiyipada» yọ suffix kuro _2015ki aaye orukọ wa jẹ gbogbo agbaye ati ominira ti orukọ apejọ:

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ninu ọran mi, ni ọja ikẹhin, awọn afikun ti gbogbo awọn ẹya ni a fi sinu folda kan, nitorinaa awọn orukọ apejọ mi wa pẹlu suffix ti fọọmu naa _20хх. Ṣugbọn o tun le yọ suffix kuro lati orukọ apejọ ti awọn faili ba yẹ ki o wa ni awọn folda oriṣiriṣi.

Jẹ ki a lọ si koodu faili Kilasi1.cs ki o si ṣe adaṣe koodu kan nibẹ, ni akiyesi awọn ẹya oriṣiriṣi ti 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;
        }
    }
}

Mo ṣe akiyesi lẹsẹkẹsẹ gbogbo awọn ẹya ti Revit ti o wa loke ẹya 2015 (eyiti o wa ni akoko kikọ) ati lẹsẹkẹsẹ ṣe akiyesi wiwa awọn aami akopo ipo, eyiti o ṣẹda ni lilo awoṣe kanna.

Jẹ ká lọ siwaju si awọn akọkọ saami. A ṣẹda iṣẹ akanṣe tuntun ni ojutu wa, nikan fun ẹya ti ohun itanna fun Revit 2016. A tun ṣe gbogbo awọn igbesẹ ti a ṣalaye loke, lẹsẹsẹ, rọpo nọmba 2015 pẹlu nọmba 2016. Ṣugbọn faili naa Kilasi1.cs pa lati titun ise agbese.

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Faili pẹlu koodu ti a beere - Kilasi1.cs - a ti ni tẹlẹ ati pe a kan nilo lati fi ọna asopọ si i ni iṣẹ akanṣe tuntun kan. Awọn ọna meji lo wa lati fi awọn ọna asopọ sii:

  1. Gigun - tẹ-ọtun lori iṣẹ naa ki o yan “fi kun un»->«Ohun elo to wa", ninu ferese ti o ṣii, wa faili ti o nilo ati dipo aṣayan"fi kun un"yan aṣayan"Fi kun bi asopọ»

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

  1. Kukuru - taara ni oluwakiri ojutu, yan faili ti o fẹ (tabi paapaa awọn faili, tabi paapaa gbogbo awọn folda) ki o fa sinu iṣẹ akanṣe tuntun lakoko ti o di bọtini Alt mọlẹ. Bi o ṣe n fa, iwọ yoo rii pe nigbati o ba tẹ bọtini Alt, kọsọ Asin yoo yipada lati ami afikun si itọka.
    Imudojuiwọn: Mo ṣe iporuru diẹ ninu paragira yii - lati gbe awọn faili lọpọlọpọ o yẹ ki o di mọlẹ Yi lọ yi bọ + Alt!

Lẹhin ṣiṣe ilana naa, a yoo ni faili kan ninu iṣẹ akanṣe keji Kilasi1.cs pẹlu aami ti o baamu (ọfa buluu):

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Nigbati o ba n ṣatunkọ koodu ni ferese olootu, o tun le yan iru ipo iṣẹ akanṣe lati ṣafihan koodu naa sinu, eyiti yoo gba ọ laaye lati wo koodu ti n ṣatunkọ labẹ awọn aami akojọpọ ipo oriṣiriṣi:

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

A ṣẹda gbogbo awọn iṣẹ akanṣe (2017-2020) ni lilo ero yii. Gige igbesi aye - ti o ba fa awọn faili ni Solusan Explorer kii ṣe lati iṣẹ akanṣe, ṣugbọn lati inu iṣẹ akanṣe nibiti wọn ti fi sii tẹlẹ bi ọna asopọ, lẹhinna o ko ni lati di bọtini Alt mọlẹ!

Aṣayan ti a ṣalaye jẹ ohun ti o dara titi di akoko ti fifi ẹya tuntun ti ohun itanna kun tabi titi di akoko ti fifi awọn faili tuntun kun si iṣẹ akanṣe - gbogbo eyi di pupọ. Ati pe laipẹ Mo lojiji lojiji rii bi o ṣe le to gbogbo rẹ jade pẹlu iṣẹ akanṣe kan ati pe a nlọ si ọna keji

Idan ti awọn atunto

Lẹhin ti o ti pari kika nibi, o le kigbe, "Kilode ti o ṣe apejuwe ọna akọkọ, ti nkan naa ba jẹ lẹsẹkẹsẹ nipa ekeji?!" Ati pe Mo ṣe apejuwe ohun gbogbo lati jẹ ki o ṣe alaye diẹ sii idi ti a nilo awọn aami akopo ipo ati ni awọn aaye wo ni awọn iṣẹ akanṣe wa yatọ. Ati pe ni bayi o di alaye si wa ni pato kini awọn iyatọ ninu awọn iṣẹ akanṣe ti a nilo lati ṣe, nlọ nikan iṣẹ akanṣe.

Ati lati jẹ ki ohun gbogbo han diẹ sii, a kii yoo ṣẹda iṣẹ akanṣe tuntun, ṣugbọn yoo ṣe awọn ayipada si iṣẹ akanṣe wa lọwọlọwọ ti a ṣẹda ni ọna akọkọ.

Nitorinaa, ni akọkọ, a yọ gbogbo awọn iṣẹ akanṣe kuro ni ojutu ayafi akọkọ (ti o ni awọn faili taara). Awon. ise agbese fun awọn ẹya 2016-2020. Ṣii folda pẹlu ojutu naa ki o paarẹ awọn folda ti awọn iṣẹ akanṣe wọnyi nibẹ.

A ni iṣẹ akanṣe kan ti o ku ninu ipinnu wa - MySuperPluginForRevit_2015. Ṣii awọn ohun-ini rẹ ati:

  1. Lori taabu"Ohun elo"yọ suffix kuro ni orukọ apejọ _2015 (Yoo di mimọ idi ti nigbamii)
  2. Lori taabu"Apejọ»yọ aami akojọpọ ipo kuro R2015 lati aaye ti o baamu

Akiyesi: ẹya tuntun ti Studio Visual ni kokoro kan - awọn aami akopo ipo ko ṣe afihan ni window awọn ohun-ini iṣẹ akanṣe, botilẹjẹpe wọn wa. Ti o ba ni iriri glitch yii, lẹhinna o nilo lati yọ wọn kuro pẹlu ọwọ lati faili .csproj. Sibẹsibẹ, a tun ni lati ṣiṣẹ ninu rẹ, nitorinaa ka siwaju.

Fun lorukọ mii iṣẹ akanṣe ni window Solusan Explorer nipa yiyọ suffix kuro _2015 ati ki o si yọ ise agbese lati ojutu. Eyi jẹ pataki lati ṣetọju aṣẹ ati awọn ikunsinu ti awọn aṣebiakọ! A ṣii folda ti ojutu wa, tun lorukọ folda ise agbese nibẹ ni ọna kanna ati fifuye iṣẹ naa pada sinu ojutu.

Ṣii oluṣakoso iṣeto. US iṣeto ni Tu ni opo, kii yoo nilo, nitorinaa a paarẹ rẹ. A ṣẹda awọn atunto tuntun pẹlu awọn orukọ ti o ti mọ tẹlẹ si wa R2015, R2016,…, R2020. Ṣe akiyesi pe o ko nilo lati daakọ awọn eto lati awọn atunto miiran ati pe o ko nilo lati ṣẹda awọn atunto iṣẹ akanṣe:

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Lọ si folda pẹlu iṣẹ akanṣe naa ki o ṣii faili pẹlu itẹsiwaju .csproj ni olootu ti o rọrun fun ọ. Nipa ọna, o tun le ṣii ni Studio Visual - o nilo lati gbejade iṣẹ akanṣe ati lẹhinna ohun ti o fẹ yoo wa ninu akojọ aṣayan ọrọ:

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ṣiṣatunṣe ni Studio Visual paapaa dara julọ, nitori olootu mejeeji ṣe deede ati awọn ta.

Ninu faili a yoo rii awọn eroja Ẹgbẹ Ohun-ini - ni oke pupọ ni gbogbogbo, ati lẹhinna awọn ipo wa. Awọn eroja wọnyi ṣeto awọn ohun-ini ti iṣẹ akanṣe nigbati o ba kọ. Ẹya akọkọ, eyiti o jẹ laisi awọn ipo, ṣeto awọn ohun-ini gbogbogbo, ati awọn eroja pẹlu awọn ipo, ni ibamu, yi awọn ohun-ini kan da lori awọn atunto.

Lọ si eroja (akọkọ) ti o wọpọ Ẹgbẹ Ohun-ini ati ki o wo ni ohun ini Orukọ Apejọ – Eyi ni orukọ apejọ ati pe o yẹ ki a ni laisi suffix _2015. Ti suffix ba wa, lẹhinna yọ kuro.

Wiwa ohun ano pẹlu kan majemu

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

A ko nilo rẹ - a parẹ.

Ano pẹlu majemu

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

yoo nilo lati ṣiṣẹ ni ipele ti idagbasoke koodu ati n ṣatunṣe aṣiṣe. O le yi awọn ohun-ini rẹ pada lati ba awọn iwulo rẹ mu - ṣeto awọn ipa ọna ti o yatọ, yi awọn aami akojọpọ ipo pada, ati bẹbẹ lọ.

Bayi jẹ ki a ṣẹda awọn eroja tuntun Ẹgbẹ Ohun-ini fun awọn atunto wa. Ninu awọn eroja wọnyi a kan nilo lati ṣeto awọn ohun-ini mẹrin:

  • Ona-jade – o wu folda. Mo ṣeto iye aiyipada binR20xx
  • DefineConstant – àídájú akopo aami. Iye yẹ ki o wa ni pato Itọpa; R20хх
  • TargetFrameworkVersion – Syeed version. Awọn ẹya oriṣiriṣi ti Revit API nilo awọn iru ẹrọ oriṣiriṣi lati wa ni pato.
  • Orukọ Apejọ - orukọ apejọ (ie orukọ faili). O le kọ orukọ gangan ti apejọ, ṣugbọn fun iyipada Mo ṣeduro kikọ iye naa $(ApejọOrukọ)_20хх. Lati ṣe eyi, a ti yọ suffix kuro tẹlẹ lati orukọ apejọ naa

Ẹya pataki julọ ti gbogbo awọn eroja wọnyi ni pe wọn le jiroro ni daakọ sinu awọn iṣẹ akanṣe miiran laisi iyipada wọn rara. Nigbamii ninu nkan naa Emi yoo so gbogbo awọn akoonu inu faili .csproj naa.

O dara, a ti ṣayẹwo awọn ohun-ini ti ise agbese na - ko nira. Ṣugbọn kini lati ṣe pẹlu awọn ile-ikawe plug-in (awọn idii NuGet). Ti a ba wo siwaju sii, a yoo rii pe awọn ile-ikawe to wa ni pato ninu awọn eroja Ẹgbẹ Nkan. Ṣugbọn buburu orire - yi ano ti ko tọ lakọkọ awọn ipo bi ohun ano Ẹgbẹ Ohun-ini. Boya eyi paapaa jẹ glitch Visual Studio, ṣugbọn ti o ba pato awọn eroja pupọ Ẹgbẹ Nkan pẹlu awọn ipo atunto, ati fi awọn ọna asopọ oriṣiriṣi si awọn idii NuGet inu, lẹhinna nigbati o ba yipada iṣeto naa, gbogbo awọn idii pato ti sopọ si iṣẹ akanṣe naa.

Eroja wa si iranlọwọ wa yan, eyi ti o ṣiṣẹ ni ibamu si imọran deede wa ti o ba ti-lẹhinna-miiran.

Lilo eroja yan, a ṣeto awọn idii NuGet oriṣiriṣi fun awọn atunto oriṣiriṣi:

Gbogbo awọn akoonu 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>

Jọwọ ṣe akiyesi pe ninu ọkan ninu awọn ipo ti Mo ṣalaye awọn atunto meji nipasẹ TABI. Ni ọna yii package ti o nilo yoo sopọ lakoko iṣeto yokokoro.

Ati ki o nibi ti a ni fere ohun gbogbo pipe. A gbe iṣẹ akanṣe pada, mu iṣeto ti a nilo ṣiṣẹ, pe nkan naa “ninu atokọ ọrọ ti ojutu (kii ṣe iṣẹ akanṣe)Pada gbogbo awọn idii NuGet pada“Ati pe a rii bii awọn idii wa ṣe yipada.

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ati ni ipele yii Mo wa si ipari ti o ku - lati le gba gbogbo awọn atunto ni ẹẹkan, a le lo apejọ apejọ (akojọ aṣyn "Apejọ»->«Kọ ipele"), ṣugbọn nigbati o ba yipada awọn atunto, awọn idii ko ni mu pada laifọwọyi. Ati nigbati o ba n ṣajọpọ iṣẹ naa, eyi tun ko ṣẹlẹ, biotilejepe, ni imọran, o yẹ. Emi ko rii ojutu kan si iṣoro yii nipa lilo awọn ọna boṣewa. Ati pe o ṣeese julọ eyi tun jẹ kokoro Studio Visual.

Nitorinaa, fun apejọ ipele, o pinnu lati lo eto apejọ adaṣe adaṣe pataki kan Nuke. Ni otitọ Emi ko fẹ eyi nitori Mo ro pe o pọju ni awọn ofin ti idagbasoke ohun itanna, ṣugbọn ni akoko Emi ko rii ojutu miiran. Ati si ibeere naa “Kini idi Nuke?” Idahun si jẹ rọrun - a lo o ni iṣẹ.

Nitorinaa, lọ si folda ti ojutu wa (kii ṣe iṣẹ akanṣe), di bọtini mọlẹ naficula ati tẹ-ọtun lori aaye ti o ṣofo ninu folda - ninu akojọ ọrọ ọrọ yan nkan naa "Ṣii window PowerShell nibi».

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ti o ko ba fi sori ẹrọ iparun, lẹhinna kọ aṣẹ akọkọ

dotnet tool install Nuke.GlobalTool –global

Bayi kọ aṣẹ naa iparun ati awọn ti o yoo ti ọ lati tunto iparun fun awọn ti isiyi ise agbese. Emi ko mọ bi a ṣe le kọ eyi ni deede ni Ilu Rọsia - ni Gẹẹsi a yoo kọ Ko le rii faili .nuke. Ṣe o fẹ lati ṣeto kikọ kan? [y/n]

Tẹ bọtini Y lẹhinna awọn ohun eto taara yoo wa. A nilo aṣayan ti o rọrun julọ ni lilo MSBuild, nitorinaa a dahun bi ninu sikirinifoto:

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Jẹ ki a lọ si Visual Studio, eyiti yoo jẹ ki a tun gbejade ojutu naa, niwọn igba ti a ti ṣafikun iṣẹ akanṣe tuntun si. A tun gbejade ojutu ati rii pe a ni iṣẹ akanṣe kan kọ ninu eyiti a nifẹ si faili kan nikan - Kọ.cs

A ṣe iṣẹ akanṣe itanna kan pẹlu akopọ fun awọn ẹya oriṣiriṣi ti Revit/AutoCAD

Ṣii faili yii ki o kọ iwe afọwọkọ kan lati kọ iṣẹ akanṣe fun gbogbo awọn atunto. O dara, tabi lo iwe afọwọkọ mi, eyiti o le ṣatunkọ lati baamu awọn iwulo rẹ:

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

A pada si window PowerShell ki o tun kọ aṣẹ naa lẹẹkansi iparun (o le kọ aṣẹ naa iparun afihan awọn ti a beere Àkọlé. Sugbon a ni ọkan Àkọlé, eyiti o nṣiṣẹ nipasẹ aiyipada). Lẹhin titẹ bọtini Tẹ, a yoo lero bi awọn olosa gidi, nitori, bi ninu fiimu kan, iṣẹ akanṣe wa yoo ṣajọpọ laifọwọyi fun awọn atunto oriṣiriṣi.

Nipa ọna, o le lo PowerShell taara lati ile-iṣẹ wiwo (akojọ aṣyn "Wo»->«Awọn window miiran»->«Console Manager Package"), ṣugbọn ohun gbogbo yoo wa ni dudu ati funfun, eyiti ko rọrun pupọ.

Eyi pari nkan mi. Mo ni idaniloju pe o le ṣawari aṣayan fun AutoCAD funrararẹ. Mo nireti pe ohun elo ti a gbekalẹ nibi yoo wa “awọn alabara” rẹ.

Ṣayẹwo bayi!

orisun: www.habr.com

Fi ọrọìwòye kun