Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Paunenge uchigadzira plugins yeCAD application (ini idzi AutoCAD, Revit uye Renga) nekufamba kwenguva, dambudziko rimwe rinooneka - shanduro itsva dzezvirongwa zvinobudiswa, API yavo inoshanduka uye itsva plugins dzinoda kuitwa.

Paunenge uine imwe chete plugin kana iwe uchiri wega-akadzidziswa anotanga munyaya iyi, unogona kungoita kopi yeprojekti, shandura nzvimbo dzinodiwa mairi uye unganidza shanduro itsva ye plugin. Saizvozvo, shanduko dzinozotevera kune iyo kodhi dzinosanganisira kuwedzera kwakawanda kwemitengo yevashandi.

Sezvo iwe uchiwana ruzivo uye ruzivo, iwe unowana nzira dzinoverengeka dzekuita otomatiki iyi maitiro. Ndakafamba nzira iyi uye ndinoda kukuudza zvandakaguma nazvo uye kuti zviri nyore sei.

Kutanga, ngatitarisei nzira iri pachena uye yandakashandisa kwenguva refu.

Links kune mafaira eprojekiti

Uye kuita zvese zviri nyore, zvinoonekwa uye zvinonzwisisika, ini ndichatsanangura zvese ndichishandisa abstract muenzaniso we plugin kuvandudza.

Ngativhure Visual Studio (ndine Community 2019 version. Uye hongu - muchiRussia) uye gadzira mhinduro itsva. Ngatimudane MySuperPluginForRevit

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Tichange tichigadzira plugin yeRevit yeshanduro 2015-2020. Naizvozvo, ngatigadzire purojekiti nyowani mumhinduro (Net Framework Class Library) uye tidaidze MySuperPluginForRevit_2015

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Isu tinofanirwa kuwedzera zvinongedzo kuRevit API. Ehe, isu tinokwanisa kuwedzera zvinongedzo kumafaira emunharaunda (tichada kuisa ese anodiwa maSDK kana ese mavhezheni eRevit), asi isu tichabva tatevera nzira chaiyo tobatanidza iyo NuGet package. Unogona kuwana akati wandei mapakeji, asi ini ndichashandisa yangu.

Mushure mekubatanidza pasuru, tinya-kurudyi pane chinhu "nezvakanyorwa"uye sarudza chinhu"Fambisa mapakeji.config kuenda kuPackageReference...Β»

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Kana kamwe kamwe panguva ino ukatanga kuvhunduka, nekuti mupakeji zvivakwa hwindo hapazovi nechinhu chakakosha "Kopa munharaunda yako", iyo yatinofanira kuisa kune kukosha venhema, saka usavhunduka - enda kune faira neprojekti, vhura faira ne .csproj extension mune imwe editor yakakunakira iwe (ndinoshandisa Notepad ++) uye tsvaga kupinda pamusoro pepakiti yedu ipapo. Iye zvino ari kutaridzika seizvi:

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

Wedzera pfuma pairi nguva yekumhanya. Zvichaita sezvizvi:

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

Zvino, kana uchivaka purojekiti, mafaera kubva pasuru haazokopwa kune yakabuda folda.
Ngatiendei mberi - ngatingofungidzira kuti plugin yedu ichashandisa chimwe chinhu kubva kuRevit API, iyo yakachinja nekufamba kwenguva apo shanduro itsva dzakaburitswa. Zvakanaka, kana isu tinongoda kushandura chimwe chinhu mukodhi zvichienderana neshanduro yeRevit yatiri kugadzira plugin. Kuti tigadzirise mutsauko wakadaro mukodhi, isu tichashandisa zvimiro zvekubatanidza zviratidzo. Vhura zvivakwa zveprojekiti, enda kune " tabGungano"uye mumunda"Conditional compilation notation"tinyore R2015.

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Ziva kuti chiratidzo chinofanira kuwedzerwa kune ese ari maviri Debug uye Release zvigadziriso.

Zvakanaka, isu tiri muhwindo rezvivakwa, isu tinobva taenda kune " tabKushanda"uye mumunda"Default namespaceΒ»bvisa chivakashure _2015kuitira kuti nzvimbo yedu yezita ive yepasirese uye yakazvimirira yezita regungano:

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Mune yangu, mune yekupedzisira chigadzirwa, maplugins eese mavhezheni anoiswa mune imwe folda, saka mazita angu egungano anoramba aine suffix yefomu. _20Ρ…Ρ…. Asi iwe unogona zvakare kubvisa suffix kubva kuzita regungano kana mafaera achifanirwa kunge ari mumafolda akasiyana.

Handei kune kodhi yefaira Class1.cs uye tevedzera imwe kodhi ipapo, uchifunga dzakasiyana shanduro dzeRevit:

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

Ndakabva ndangofunga nezvese mavhezheni eRevit pamusoro vhezheni 2015 (aive aripo panguva yekunyora) uye ndakabva ndafunga nezvekuvapo kwezvimiro zvekubatanidza zviratidzo, izvo zvinogadzirwa uchishandisa imwechete template.

Ngatienderere mberi kune chikuru chakajeka. Isu tinogadzira chirongwa chitsva mumhinduro yedu, chete yeshanduro ye plugin yeRevit 2016. Tinodzokorora matanho ese anotsanangurwa pamusoro apa, zvichiteerana, kutsiva nhamba 2015 nenhamba 2016. Asi iyo faira Class1.cs bvisa kubva pachirongwa chitsva.

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Faira ine kodhi inodiwa - Class1.cs - isu tatova nayo uye isu tinongoda kuisa chinongedzo pairi muchirongwa chitsva. Pane nzira mbiri dzekuisa ma link:

  1. Kureba - tinya-kurudyi pane purojekiti uye sarudza "wedzeraΒ»->Β«Chipo chiripo", muhwindo rinovhura, tsvaga faira rinodiwa uye pachinzvimbo chesarudzo"wedzera"sarudza sarudzo"Wedzera sekubatanidzaΒ»

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

  1. Short - zvakananga mumuongorori wemhinduro, sarudza faira yaunoda (kana mafaera, kana maforodha ese) uye woidhonzera mupurojekiti nyowani uchibata pasi kiyi yeAlt. Paunenge uchidhonza, iwe uchaona kuti kana iwe ukadzvanya Alt kiyi, mbeva cursor inochinja kubva pakuwedzera chiratidzo kuenda kumuseve.
    UPS: Ndakaita nyonganiso mundima iyi - kuendesa akati wandei mafaera iwe unofanirwa kubata pasi Shift + Alt!

Mushure mekuita maitiro, tichava nefaira muchirongwa chechipiri Class1.cs ine chiratidzo chinoenderana (blue museve):

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Paunenge uchigadzirisa kodhi muhwindo remupepeti, unogona zvakare kusarudza kuti ndeipi purojekiti yekuratidzira iyo kodhi mukati, izvo zvinokutendera iwe kuti uone iyo kodhi iri kugadziridzwa pasi peakasiyana mamiriro ekuunganidza zviratidzo:

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Isu tinogadzira mamwe ese mapurojekiti (2017-2020) tichishandisa chirongwa ichi. Hupenyu hack - kana iwe ukadhonza mafaera muSolution Explorer kwete kubva pachigadziko purojekiti, asi kubva kupurojekiti iyo yatoiswa senge chinongedzo, saka haufanirwe kubata pasi Alt kiyi!

Iyo yakatsanangurwa sarudzo yakanaka kwazvo kusvika iyo nguva yekuwedzera vhezheni itsva yeplugin kana kusvika nguva yekuwedzera mafaera matsva kupurojekiti - zvese izvi zvinova zvinonetesa. Uye munguva pfupi yapfuura ndakaerekana ndaona nzira yekuzvigadzirisa zvese neprojekti imwe uye isu tiri kuenda kune yechipiri nzira

Mashiripiti ezvigadziro

Wapedza kuverenga pano, ungati, β€œNei watsanangura nzira yokutanga, kana nyaya yacho yangobva yangove yechipiri?!” Uye ndakatsanangura zvese kuti zvijeke kuti sei isu tichida zvimiro zvekuunganidza zviratidzo uye munzvimbo dzipi mapurojekiti edu anosiyana. Uye zvino zvinova pachena kwatiri chaizvo misiyano mumapurojekiti atinofanira kuita, tichisiya chirongwa chimwe chete.

Uye kuita kuti zvinhu zvose zvive pachena, hatisi kuzogadzira purojekiti itsva, asi tichaita shanduko kune yedu yazvino purojekiti yakagadzirwa nenzira yekutanga.

Saka, kutanga kwezvose, tinobvisa mapurojekiti ose kubva pane mhinduro kunze kweiyo huru (ine mafaira zvakananga). Avo. mapurojekiti eshanduro 2016-2020. Vhura iyo folda ine mhinduro uye wodzima maforodha emapurojekiti aya ipapo.

Tine chirongwa chimwe chasara muchisarudzo chedu - MySuperPluginForRevit_2015. Vhura zvimiro zvayo uye:

  1. Pa tab "Kushanda"bvisa suffix kubva pazita remusangano _2015 (zvichabuda pachena kuti sei gare gare)
  2. Pa tab "GunganoΒ»bvisa chiratidzo chekubatanidza R2015 kubva kumunda unoenderana

Ongorora: yazvino vhezheni yeVisual Studio ine bug - ane mamiriro ekubatanidza zviratidzo haana kuratidzwa muprojekiti zvivakwa hwindo, kunyangwe aripo. Kana ukasangana nedambudziko iri, unofanira kuzvibvisa nemaoko kubva ku.csproj file. Nekudaro, isu tichiri kufanira kushanda mairi, saka ramba uchiverenga.

Rena zita repurojekiti muSolution Explorer hwindo nekubvisa suffix _2015 uye wozobvisa purojekiti kubva pane mhinduro. Izvi zvinodiwa kuchengetedza kurongeka uye manzwiro evanoda zvakakwana! Isu tinovhura iyo folda yemhinduro yedu, topa zita repurojekiti ipapo nenzira imwechete uye torodha purojekiti mumhinduro.

Vhura iyo configuration maneja. US configuration rusununguko musimboti, hazvizodiwi, saka tinoidzima. Isu tinogadzira zvigadziriso zvitsva nemazita atinotoziva kare R2015, R2016,…, R2020. Ziva kuti haufanire kukopa marongero kubva kune mamwe magadzirirwo uye haufanire kugadzira magadzirirwo eprojekiti:

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Enda kufoodha ine purojekiti wovhura faira ne .csproj extension mupepeti yakakunakira. Nenzira, iwe unogona zvakare kuivhura muVisual Studio - unofanirwa kuburitsa purojekiti uye ipapo chinhu chaunoda chichava mumenu yemamiriro ezvinhu:

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Kugadzirisa muVisual Studio kunotonyanya kudiwa, sezvo mupepeti achienderana uye achikurudzira.

Mufaira tichaona zvinhu PropertyGroup - kumusoro chaiko ndiko kuzere, uyezve kunouya mamiriro. Zvinhu izvi zvinogadzirisa zvinhu zvepurojekiti kana ichivakwa. Chekutanga element, iyo isina mamiriro, inoisa general zvivakwa, uye zvinhu zvine mamiriro, zvinoenderana, shandura zvimwe zvivakwa zvinoenderana nekugadzirisa.

Enda kune yakajairwa (yekutanga) chinhu PropertyGroup uye tarisa pfuma AssemblyName - iri ndiro zita regungano uye tinofanira kuva naro pasina chivakashure _2015. Kana pane suffix, woibvisa.

Kutsvaga chinhu chine chimiro

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

Hatidi - tinoidzima.

Element ine mamiriro

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

ichadikanwa kushanda padanho rekuvandudza kodhi uye kugadzirisa. Unogona kushandura zvivakwa zvayo kuti zvienderane nezvido zvako - seta nzira dzakasiyana dzekubuda, shandura zvimiro zvekubatanidza zviratidzo, nezvimwe.

Zvino ngatigadzire zvinhu zvitsva PropertyGroup zvemagadzirirwo edu. Muzvinhu izvi isu tinongoda kuseta zvinhu zvina:

  • OutputPath -kubuda folda. Ndakaisa kukosha kwekutanga binR20xx
  • DefineConstants - zvimiro zvekubatanidza zviratidzo. Kukosha kunofanirwa kutsanangurwa TRACE;R20Ρ…Ρ…
  • TargetFrameworkVersion - shanduro shanduro. Mhando dzakasiyana dzeRevit API dzinoda kuti mapuratifomu akasiyana atsanangurwe.
  • AssemblyName - zita remusangano (kureva zita refaira). Iwe unogona kunyora zita chairo regungano, asi kune zvakasiyana-siyana ndinokurudzira kunyora kukosha $(AssemblyName)_20Ρ…Ρ…. Kuti tiite izvi, takambobvisa suffix kubva pazita regungano

Chinonyanya kukosha pane zvese izvi zvinhu ndechekuti ivo vanogona kungoteedzera mune mamwe mapurojekiti pasina kuachinja zvachose. Gare gare munyaya ini ndichabatanidza zvose zviri mukati me .csproj file.

Zvakanaka, isu takafunga zvivakwa zvepurojekiti - hazvina kuoma. Asi zvekuita nemaraibhurari eplug-in (NuGet mapakeji). Kana tikatarisa mberi, tinoona kuti maraibhurari anosanganisirwa anotsanangurwa muzvinhu ItemGroup. Asi rombo rakanaka - ichi chinhu chinokanganisa mamiriro sechinhu PropertyGroup. Zvichida iyi inotova Visual Studio glitch, asi kana iwe ukatsanangura akati wandei ItemGroup nemamiriro ekugadzirisa, uye isa zvakasiyana-siyana zvinongedzo kuNuGet mapakeji mukati, ipapo kana iwe wachinja gadziriso, ese akatsanangurwa mapakeji akabatana kune purojekiti.

Chinhu chinouya kuzotibatsira Sarudza, iyo inoshanda maererano nemafungiro edu emazuva ose kana-zvadaro-zvimwe.

Kushandisa element Sarudza, isu tinoseta akasiyana NuGet mapakeji kune akasiyana masisitimu:

Zvese zvirimo 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>

Ndokumbira utarise kuti mune imwe yemamiriro ezvinhu ini ndakatsanangura maviri magadzirirwo kuburikidza OR. Nenzira iyi iyo pasuru inodiwa ichabatanidzwa panguva yekugadziriswa Kugadzirisa.

Uye pano tine zvinenge zvese zvakakwana. Isu tinorodha purojekiti kumashure, gonesa iyo gadziriso yatinoda, fonera chinhu " mumenu yemamiriro emhinduro (kwete chirongwa)Dzosera mapakeji ese eNuGet"uye isu tinoona kuti mapakeji edu anochinja sei.

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Uye panguva ino ndakasvika kumagumo - kuitira kuunganidza zvese zvigadziriso kamwechete, tinogona kushandisa batch assembly (menu "GunganoΒ»->Β«Batch kugadzira"), asi kana uchichinja zvigadziriso, mapakeji haadzorerwe otomatiki. Uye pakuunganidza purojekiti, izvi zvakare hazviitiki, kunyange, muchirevo, zvinofanira. Ini handina kuwana mhinduro kudambudziko iri ndichishandisa nzira dzakajairika. Uye kazhinji iyi zvakare iri Visual Studio bug.

Naizvozvo, pagungano rebatch, zvakasarudzwa kushandisa yakakosha otomatiki gungano system Nuke. Ini ndakanga ndisingade izvi nekuti ndinofunga kuti zvakanyanyisa maererano nekusimudzira plugin, asi parizvino handisi kuona imwe mhinduro. Uye kumubvunzo "Sei Nuke?" Mhinduro iri nyore - tinoishandisa kubasa.

Saka, enda kune folda yemhinduro yedu (kwete purojekiti), bata pasi kiyi kusuduruka uye tinya-kurudyi panzvimbo isina chinhu muforodha - mune yemukati menyu sarudza chinhu "Vhura PowerShell hwindo pano".

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Kana usina kuiswa nuke, wozotanga wanyora murayiro wacho

dotnet tool install Nuke.GlobalTool –global

Zvino nyora murairo nuke uye iwe unozokurudzirwa kugadzirisa nuke yeprojekti yazvino. Handizivi kunyora izvi zvakanyanya muRussia - muChirungu zvichanyorwa Haikwanise kuwana .nuke faira. Iwe unoda kugadzirisa chigadzirwa here? [y/n]

Dzvanya kiyi Y uye ipapo pachave neakananga marongero zvinhu. Tinoda yakareruka sarudzo kushandisa MSBuild, saka isu tinopindura sezviri muscreenshot:

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Ngatiendei kuVisual Studio, iyo ichatikurudzira kurodhazve mhinduro, sezvo chirongwa chitsva chawedzerwa kwachiri. Isu tinorodha zvakare mhinduro uye tinoona kuti isu tine chirongwa kuvaka umo isu tiri kufarira faira rimwe chete - Build.cs

Isu tinoita imwe plugin purojekiti nekubatanidza kune akasiyana mavhezheni eRevit/AutoCAD

Vhura iyi faira uye nyora script kuvaka purojekiti yezvese zvigadziriso. Zvakanaka, kana shandisa script yangu, yaunogona kugadzirisa kuti ienderane nezvido zvako:

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

Isu tinodzokera kuhwindo rePowerShell uye tonyora murairo zvakare nuke (unogona kunyora murairo nuke zvichiratidza zvinodiwa chipfuro. Asi isu tine mumwe chipfuro, iyo inomhanya neyakagadzika). Mushure mekudzvanya Enter kiyi, isu tinonzwa senge matsotsi chaiwo, nekuti, senge mubhaisikopo, chirongwa chedu chinozounganidzwa otomatiki kune akasiyana masisitimu.

Nenzira, unogona kushandisa PowerShell zvakananga kubva kuVisual Studio (menu "maoneroΒ»->Β«Mamwe mahwindoΒ»->Β«Package Manager Console"), asi zvese zvichange zviri mutema uye chena, izvo zvisiri nyore.

Izvi zvinopedzisa chinyorwa changu. Ndine chokwadi chekuti iwe unogona kufunga sarudzo ye AutoCAD iwe pachako. Ndinovimba kuti zvinyorwa zvinoratidzwa pano zvichawana "vatengi" vayo.

Бпасибо за вниманиС!

Source: www.habr.com

Voeg