Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Thaum tsim cov plugins rau CAD daim ntawv thov (hauv kuv li cas cov no yog AutoCAD, Revit thiab Renga) dhau sijhawm, ib qho teeb meem tshwm sim - cov kev pab cuam tshiab raug tso tawm, lawv cov kev hloov pauv API thiab cov plugins tshiab yuav tsum tau ua.

Thaum koj tsuas muaj ib lub plugin lossis koj tseem yog tus pib qhia tus kheej hauv qhov teeb meem no, koj tuaj yeem ua ib daim qauv ntawm qhov project, hloov qhov tsim nyog qhov chaw hauv nws thiab sib sau ua ke ib qho tshiab ntawm plugin. Yog li ntawd, kev hloov pauv tom ntej rau txoj cai yuav ua rau muaj ntau yam kev nce nqi ntawm kev ua haujlwm.

Raws li koj tau txais kev paub thiab kev paub, koj yuav pom ntau txoj hauv kev los ua kom cov txheej txheem no. Kuv taug txoj kev no thiab kuv xav qhia rau koj paub qhov kuv tau ua tiav thiab nws yooj yim npaum li cas.

Ua ntej, cia peb saib ib txoj kev uas pom tseeb thiab uas kuv tau siv los ntev.

Txuas mus rau qhov project files

Thiab ua kom txhua yam yooj yim, pom thiab nkag siab, Kuv yuav piav qhia txhua yam uas siv tus piv txwv paub daws teeb ntawm kev txhim kho plugin.

Cia peb qhib Visual Studio (Kuv muaj lub Zej Zog 2019 version. Thiab yog - hauv Lavxias) thiab tsim cov kev daws teeb meem tshiab. Wb hu nws MySuperPluginForRevit

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Peb yuav ua lub plugin rau Revit rau versions 2015-2020. Yog li ntawd, cia peb tsim ib txoj haujlwm tshiab hauv kev daws teeb meem (Net Framework Class Library) thiab hu nws MySuperPluginForRevit_2015

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Peb yuav tsum tau ntxiv cov txuas mus rau Revit API. Tau kawg, peb tuaj yeem ntxiv cov kev txuas mus rau cov ntaub ntawv hauv zos (peb yuav tsum tau nruab tag nrho cov tsim nyog SDKs lossis tag nrho cov versions ntawm Revit), tab sis peb yuav tam sim ntawd ua raws li txoj cai thiab txuas cov pob NuGet. Koj tuaj yeem nrhiav tau ob peb pob, tab sis kuv yuav siv kuv tus kheej.

Tom qab txuas lub pob, right-click ntawm cov khoom "ua tim khawv"thiab xaiv cov khoom"Txav mus packages.config rau PackageReference...Β»

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Yog tias tam sim no koj pib ntshai, vim hais tias nyob rau hauv lub pob khoom lub qhov rais yuav tsis muaj cov khoom tseem ceeb "Luam hauv zos", uas peb twv yuav raug hu yuav tsum tau teem rau tus nqi cuav, ces tsis txhob ntshai - mus rau lub nplaub tshev nrog rau qhov project, qhib cov ntaub ntawv nrog lub .csproj extension nyob rau hauv ib tug editor yooj yim rau koj (Kuv siv Notepad ++) thiab nrhiav tau ib qho kev nkag ntawm peb pob nyob rau hauv. Nws zoo li no tam sim no:

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

Ntxiv ib qho khoom rau nws lub sijhawm ua haujlwm. Nws yuav zoo li no:

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

Tam sim no, thaum tsim ib qhov project, cov ntaub ntawv los ntawm lub pob yuav tsis raug theej rau hauv cov ntawv tso tawm.
Cia peb mus ntxiv - cia peb xav tam sim ntawd tias peb lub plugin yuav siv qee yam los ntawm Revit API, uas tau hloov pauv lub sijhawm thaum cov ntawv tshiab tau tso tawm. Zoo, lossis peb tsuas yog yuav tsum tau hloov qee yam hauv cov cai nyob ntawm lub version ntawm Revit uas peb tab tom ua lub plugin. Txhawm rau daws qhov sib txawv ntawm cov lej no, peb yuav siv cov cim tso ua ke raws cai. Qhib qhov project Properties, mus rau "tabSib dhos"thiab hauv thaj chaw"Conditional compilation notation"cia peb sau R2015.

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Nco ntsoov tias lub cim yuav tsum tau ntxiv rau ob qho tib si Debug thiab tso tawm teeb tsa.

Zoo, thaum peb nyob hauv lub qhov rais khoom, peb tam sim ntawd mus rau "tabDaim ntawv thov"thiab hauv thaj chaw"Default namespaceΒ» tshem tawm cov lus _2015yog li ntawd peb namespace yog universal thiab ywj siab ntawm lub rooj sib txoos lub npe:

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Hauv kuv cov ntaub ntawv, hauv cov khoom kawg, plugins ntawm tag nrho cov versions tau muab tso rau hauv ib lub nplaub tshev, yog li kuv cov npe sib dhos tseem nyob nrog lub ntsiab lus ntawm daim ntawv. _20 x x. Tab sis koj tuaj yeem tshem tawm cov lus sau los ntawm lub npe sib dhos yog tias cov ntaub ntawv yuav tsum tau nyob hauv ntau cov folders.

Wb mus rau cov ntaub ntawv code Class1.cs thiab simulate qee qhov chaws nyob ntawd, coj mus rau hauv tus lej sib txawv ntawm 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;
        }
    }
}

Kuv tam sim ntawd coj mus rau hauv tus account tag nrho cov versions ntawm Revit saum toj no version 2015 (uas muaj nyob rau hauv lub sij hawm ntawm kev sau ntawv) thiab tam sim ntawd coj mus rau hauv tus account lub xub ntiag ntawm tej yam kev mob compilation cim, uas yog tsim los siv tib lub template.

Cia peb txav mus rau qhov tseem ceeb. Peb tsim ib txoj haujlwm tshiab hauv peb cov kev daws teeb meem, tsuas yog rau cov version ntawm plugin rau Revit 2016. Peb rov ua txhua kauj ruam uas tau piav qhia saum toj no, feem, hloov tus lej 2015 nrog tus lej 2016. Tab sis cov ntaub ntawv Class1.cs deleted los ntawm qhov project tshiab.

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Cov ntaub ntawv nrog tus lej xav tau - Class1.cs - peb twb muaj nws thiab peb tsuas yog xav tau ntxig ib qhov txuas rau nws hauv qhov project tshiab. Muaj ob txoj hauv kev los ntxig cov txuas:

  1. Ntev - right-click rau qhov project thiab xaiv "Ntxiv"->" ibYam khoom uas twb muaj lawm", nyob rau hauv lub qhov rais uas qhib, nrhiav cov ntaub ntawv xav tau thiab hloov qhov kev xaiv "Ntxiv"xaiv qhov kev xaiv"Ntxiv raws li kev sib txuasΒ»

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

  1. Luv luv - ncaj qha rau hauv cov kev daws teeb meem explorer, xaiv cov ntaub ntawv xav tau (lossis cov ntaub ntawv, lossis txawm tias tag nrho cov folders) thiab rub nws mus rau hauv qhov project tshiab thaum tuav Alt yuam sij. Thaum koj luag, koj yuav pom tias thaum koj nias qhov tseem ceeb Alt, tus nas cursor yuav hloov ntawm ib qho ntxiv kos npe mus rau ib qho xub.
    Hloov tshiab: Kuv ua rau me ntsis tsis meej pem hauv kab lus no - hloov ntau cov ntaub ntawv koj yuav tsum tuav cia Hloov + Qhab!

Tom qab ua tiav cov txheej txheem, peb yuav muaj cov ntaub ntawv hauv qhov project thib ob Class1.cs nrog rau qhov sib thooj icon (xiav xub):

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Thaum kho cov cai hauv lub qhov rais editor, koj tuaj yeem xaiv qhov project ntsiab lus los tso saib cov cai hauv, uas yuav tso cai rau koj pom cov cai raug kho raws li cov cim sib txawv ntawm cov cim sib txawv:

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Peb tsim tag nrho lwm cov haujlwm (2017-2020) siv cov tswv yim no. Lub neej hack - yog tias koj rub cov ntaub ntawv hauv Solution Explorer tsis yog los ntawm lub hauv paus phiaj xwm, tab sis los ntawm qhov project uas lawv twb tau muab tso ua qhov txuas, ces koj tsis tas yuav tuav lub Alt yuam sij!

Cov kev xaiv tau piav qhia yog qhov zoo heev kom txog rau thaum lub sijhawm ntxiv cov tshiab version ntawm lub plugin lossis txog thaum lub sijhawm ntxiv cov ntaub ntawv tshiab rau qhov project - tag nrho cov no ua rau khaus heev. Thiab tsis ntev los no kuv mam li nco dheev paub yuav ua li cas txheeb nws tag nrho nrog ib qhov project thiab peb tab tom mus rau txoj kev thib ob

Cov khawv koob ntawm configurations

Tom qab nyeem tas ntawm no, koj tuaj yeem hais tias, "Vim li cas koj thiaj piav txog thawj txoj hauv kev, yog tias tsab xov xwm tam sim ntawd txog qhov thib ob?!" Thiab kuv tau piav qhia txhua yam kom paub meej tias yog vim li cas peb thiaj li xav tau cov cim sau ua ke thiab nyob rau hauv qhov chaw peb qhov project txawv. Thiab tam sim no nws ua kom pom tseeb rau peb raws nraim qhov sib txawv ntawm cov haujlwm peb xav tau los siv, tawm hauv ib qhov project xwb.

Thiab ua kom txhua yam pom tseeb dua, peb yuav tsis tsim ib txoj haujlwm tshiab, tab sis yuav hloov pauv rau peb qhov project tam sim no tsim thawj txoj hauv kev.

Yog li, ua ntej ntawm tag nrho cov, peb tshem tawm tag nrho cov haujlwm los ntawm kev daws tsuas yog lub ntsiab (muaj cov ntaub ntawv ncaj qha). Cov. tej yaam num rau versions 2016-2020. Qhib cov nplaub tshev nrog cov kev daws teeb meem thiab tshem tawm cov folders ntawm cov haujlwm no.

Peb muaj ib qhov project sab laug hauv peb qhov kev txiav txim siab - MySuperPluginForRevit_2015. Qhib nws cov khoom thiab:

  1. Na tab "Daim ntawv thov"tshem tawm lub ntsiab lus los ntawm lub npe sib dhos _2015 (Nws yuav paub meej vim li cas tom qab)
  2. Na tab "Sib dhosΒ» tshem tawm cov cim sau ua ke R2015 los ntawm cov teb sib xws

Nco tseg: qhov tseeb version ntawm Visual Studio muaj kab laum - cov cim tso ua ke tsis raug tso tawm hauv qhov project qhov rais, txawm tias lawv muaj. Yog tias koj ntsib qhov teeb meem no, koj yuav tsum tshem tawm lawv manually los ntawm cov ntaub ntawv .csproj. Txawm li cas los xij, peb tseem yuav tsum ua haujlwm hauv nws, yog li nyeem ntxiv.

Rename qhov project hauv Solution Explorer qhov rai los ntawm kev tshem tawm cov lus tom qab _2015 thiab tom qab ntawd tshem tawm qhov project los ntawm kev daws teeb meem. Qhov no yog qhov tsim nyog los tswj kev txiav txim siab thiab kev xav ntawm perfectionists! Qhib cov ntawv tais ceev tseg ntawm peb cov kev daws teeb meem, hloov lub npe qhov project folder nyob rau hauv tib txoj kev thiab thauj cov phiaj xwm rov qab rau hauv qhov kev daws teeb meem.

Qhib tus thawj tswj kev teeb tsa. US configuration tso tawm hauv paus ntsiab lus, nws yuav tsis xav tau, yog li peb tshem tawm nws. Peb tsim cov kev teeb tsa tshiab nrog cov npe uas twb paub peb lawm R2015, R2016,..., R2020. Nco ntsoov tias koj tsis tas yuav luam qhov chaw los ntawm lwm qhov kev teeb tsa thiab koj tsis tas yuav tsim qhov project configurations:

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Mus rau hauv daim nplaub tshev nrog rau qhov project thiab qhib cov ntaub ntawv nrog .csproj extension hauv tus editor yooj yim rau koj. Los ntawm txoj kev, koj tuaj yeem qhib nws hauv Visual Studio - koj yuav tsum tshem tawm qhov project thiab tom qab ntawd cov khoom xav tau yuav nyob rau hauv cov ntawv qhia zaub mov:

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Kev hloov kho hauv Visual Studio yog qhov zoo dua, txij li tus editor ob qho tib si sib dhos thiab ua kom sai.

Hauv cov ntaub ntawv peb yuav pom cov ntsiab lus PropertyGroup - nyob rau sab saum toj yog qhov dav dav, thiab tom qab ntawd los ntawm cov xwm txheej. Cov ntsiab lus no tau teeb tsa cov khoom ntawm qhov project thaum nws tsim. Thawj lub ntsiab lus, uas tsis muaj cov xwm txheej, teeb tsa cov khoom siv dav dav, thiab cov ntsiab lus nrog cov xwm txheej, raws li, hloov qee yam khoom nyob ntawm kev teeb tsa.

Mus rau lub ntsiab (thawj). PropertyGroup thiab saib cov khoom Lub Npe Lub Npe - qhov no yog lub npe ntawm lub rooj sib txoos thiab peb yuav tsum muaj nws yam tsis muaj lub ntsiab lus _2015. Yog hais tias muaj ib tug suffix, ces tshem nws.

Nrhiav ib lub ntsiab nrog ib qho xwm txheej

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

Peb tsis xav tau nws - peb tshem nws.

Element nrog mob

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

yuav tsum tau ua hauj lwm nyob rau theem ntawm txoj cai txoj kev loj hlob thiab debugging. Koj tuaj yeem hloov nws cov khoom kom haum rau koj cov kev xav tau - teem caij sib txawv, hloov cov cim tso ua ke, thiab lwm yam.

Tam sim no cia peb tsim cov ntsiab lus tshiab PropertyGroup rau peb configurations. Hauv cov ntsiab lus no peb tsuas yog yuav tsum teeb tsa plaub lub zog:

  • OutputPath - tso zis folder. Kuv teeb tus nqi pib ib 20xx
  • DefineConstants - conditional compilation symbols. Tus nqi yuav tsum tau teev tseg TRACE; R20x x
  • TargetFrameworkVersion - platform version. Cov ntawv sib txawv ntawm Revit API xav tau cov platform sib txawv kom tau teev tseg.
  • Lub Npe Lub Npe - lub npe sib dhos (piv txwv li cov ntaub ntawv npe). Koj tuaj yeem sau lub npe ntawm lub rooj sib txoos, tab sis rau ntau yam kuv xav kom sau tus nqi $(AssemblyName)_20xΡ…. Txhawm rau ua qhov no, peb yav dhau los tshem tawm cov lus kawg ntawm lub npe sib dhos

Qhov tseem ceeb tshaj plaws ntawm tag nrho cov ntsiab lus no yog tias lawv tuaj yeem luam tawm mus rau lwm qhov haujlwm yam tsis tau hloov pauv txhua. Tom qab ntawv hauv tsab xov xwm kuv yuav muab tag nrho cov ntsiab lus ntawm .csproj cov ntaub ntawv.

Okay, peb tau txheeb xyuas cov khoom ntawm qhov project - nws tsis nyuaj. Tab sis yuav ua li cas nrog cov tsev qiv ntawv plug-in (NuGet pob). Yog tias peb saib ntxiv, peb yuav pom tias cov tsev qiv ntawv suav nrog tau teev tseg hauv cov ntsiab lus Yam khoom Group. Tab sis hmoov tsis zoo - lub caij no tsis raug ua cov txheej txheem raws li lub caij PropertyGroup. Tej zaum qhov no txawm yog Visual Studio glitch, tab sis yog tias koj qhia ntau yam Yam khoom Group nrog rau configuration tej yam kev mob, thiab ntxig sib txawv mus rau NuGet tej pob khoom nyob rau hauv, ces thaum koj hloov lub configuration, tag nrho cov teev tej pob khoom txuas nrog rau qhov project.

Lub ntsiab tuaj rau peb pab xaiv, uas ua hauj lwm raws li peb niaj hnub logic yog tias - tom qab ntawd - lwm tus.

Siv lub ntsiab xaiv, peb teeb cov pob NuGet sib txawv rau kev teeb tsa sib txawv:

Tag nrho cov ntsiab lus 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>

Thov nco ntsoov tias hauv ib qho ntawm cov xwm txheej kuv tau teev ob qhov kev teeb tsa ntawm LOSSIS. Txoj kev no lub pob yuav tsum tau txuas nrog thaum lub sijhawm teeb tsa Debug.

Thiab ntawm no peb muaj yuav luag txhua yam zoo meej. Peb thauj cov phiaj xwm rov qab, pab kom cov kev teeb tsa peb xav tau, hu rau cov khoom "hauv cov ntawv qhia zaub mov ntawm kev daws teeb meem (tsis yog qhov project)Restore tag nrho cov pob NuGet"thiab peb pom tias peb cov pob khoom hloov pauv li cas.

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Thiab nyob rau theem no kuv tuaj txog qhov kawg - txhawm rau sau tag nrho cov kev teeb tsa ib zaug, peb tuaj yeem siv batch los ua ke (cov ntawv qhia zaub mov "Sib dhos"->" ibBatch tsim"), tab sis thaum hloov kev teeb tsa, pob khoom tsis tuaj yeem rov qab los. Thiab thaum sib sau ua ke qhov project, qhov no kuj tsis tshwm sim, txawm hais tias, hauv txoj kev xav, nws yuav tsum. Kuv tsis tau pom ib qho kev daws teeb meem rau qhov teeb meem no siv tus qauv txhais tau tias. Thiab feem ntau yuav qhov no kuj yog Visual Studio kab laum.

Yog li ntawd, rau batch los ua ke, nws tau txiav txim siab los siv ib tug tshwj xeeb automated los ua ke system Nuke. Kuv yeej tsis xav tau qhov no vim kuv xav tias nws yog overkill nyob rau hauv cov nqe lus ntawm kev txhim kho plugin, tab sis tam sim no kuv tsis pom lwm yam kev daws teeb meem. Thiab rau lo lus nug "Vim li cas Nuke?" Cov lus teb yog yooj yim - peb siv nws tom haujlwm.

Yog li, mus rau lub nplaub tshev ntawm peb cov kev daws teeb meem (tsis yog qhov project), tuav tus yuam sij ua haujlwm thiab right-click rau ntawm qhov chaw khoob hauv daim nplaub tshev - hauv cov ntawv qhia zaub mov xaiv cov khoom "Qhib PowerShell qhov rais ntawm no".

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Yog hais tias koj tsis muaj nws ntsia nuke, ces xub sau cov lus txib

dotnet tool install Nuke.GlobalTool –global

Tam sim no sau cov lus txib nuke thiab koj yuav tau hais kom configure nuke rau qhov project tam sim no. Kuv tsis paub yuav ua li cas sau qhov no kom raug nyob rau hauv Lavxias teb sab - lus Askiv nws yuav sau tsis tau .nuke ntaub ntawv. Koj puas xav teeb tsa? [y/n]

Nias tus yuam sij Y thiab tom qab ntawd yuav muaj cov khoom teeb tsa ncaj qha. Peb xav tau qhov kev xaiv yooj yim tshaj plaws siv MSBuild, yog li peb teb raws li nyob rau hauv lub screenshot:

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Cia peb mus rau Visual Studio, uas yuav ua rau peb rov qab kho qhov kev daws teeb meem, txij li qhov project tshiab tau ntxiv rau nws. Peb reload qhov kev daws teeb meem thiab pom tias peb muaj ib qhov project tsim nyob rau hauv uas peb txaus siab nyob rau hauv tsuas yog ib daim ntawv - Build.cs

Peb ua ib qhov project plugin nrog muab tso ua ke rau txawv versions ntawm Revit/AutoCAD

Qhib cov ntaub ntawv no thiab sau ib tsab ntawv los tsim qhov project rau txhua qhov kev teeb tsa. Zoo, lossis siv kuv tsab ntawv, uas koj tuaj yeem hloov kho kom haum koj cov kev xav tau:

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

Peb rov qab mus rau lub qhov rais PowerShell thiab sau cov lus txib dua nuke (koj tuaj yeem sau cov lus txib nuke qhia qhov xav tau Target. Tab sis peb muaj ib qho Target, uas khiav los ntawm lub neej ntawd). Tom qab nias tus yuam sij Enter, peb yuav hnov ​​​​zoo li hackers tiag tiag, vim hais tias, zoo li hauv cov yeeb yaj kiab, peb qhov project yuav tau txais kev sib sau ua ke rau kev teeb tsa sib txawv.

Los ntawm txoj kev, koj tuaj yeem siv PowerShell ncaj qha los ntawm Visual Studio (cov ntawv qhia zaub mov "saib"->" ibLwm qhov rais"->" ibPackage Manager Console"), tab sis txhua yam yuav yog xim dub thiab dawb, uas tsis yooj yim heev.

Qhov no xaus kuv tsab xov xwm. Kuv paub tseeb tias koj tuaj yeem txheeb xyuas qhov kev xaiv rau AutoCAD koj tus kheej. Kuv vam tias cov khoom uas tau nthuav tawm ntawm no yuav pom nws "cov neeg siv khoom".

Ua tsaug rau koj txoj kev paub!

Tau qhov twg los: www.hab.com

Ntxiv ib saib