Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Rehefa mamorona plugins ho an'ny fampiharana CAD (raha ny amiko Ireo dia AutoCAD, Revit ary Renga) rehefa mandeha ny fotoana, dia misy olana iray - mivoaka ny dikan-teny vaovao, ny fanovana API ary ny dikan-teny vaovao amin'ny plugins dia tsy maintsy atao.

Rehefa manana plugin iray ihany ianao na mbola mpianatry ny tena manokana amin'ity raharaha ity dia azonao atao ny manao dika mitovy amin'ny tetikasa, manova ny toerana ilaina ao ary manangona dikan-teny vaovao amin'ny plugin. Araka izany, ny fanovana manaraka amin'ny fehezan-dalΓ na dia mitaky fisondrotry ny vidin'ny asa.

Rehefa mahazo traikefa sy fahalalana ianao dia hahita fomba maro ahafahana manara-maso ity dingana ity. Nandeha an'io lalana io aho ary te-hilaza aminao izay niafarako sy ny maha-mety azy.

Andeha aloha hojerentsika ny fomba iray miharihary ary efa nampiasaiko hatry ny ela.

Rohy mankany amin'ny rakitra tetikasa

Ary mba hahatonga ny zava-drehetra ho tsotra, hita maso ary takatry ny saina, dia holazaiko ny zava-drehetra amin'ny fampiasana ohatra iray amin'ny fampivoarana plugin.

Andao hanokatra Visual Studio (Manana ny Community 2019 version aho. Ary eny - amin'ny teny Rosiana) ary mamorona vahaolana vaovao. Andeha isika hiantso azy MySuperPluginForRevit

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Hanamboatra plugin ho an'ny Revit ho an'ny version 2015-2020 izahay. Noho izany, andao hamorona tetikasa vaovao amin'ny vahaolana (Net Framework Class Library) ary hiantso azy io MySuperPluginForRevit_2015

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Mila manampy rohy mankany amin'ny Revit API isika. Mazava ho azy fa afaka manampy rohy mankany amin'ny rakitra eo an-toerana isika (mila mametraka ny SDK ilaina rehetra na ny dikan-teny Revit rehetra), fa hanaraka ny lalana marina avy hatrany isika ary hampifandray ny fonosana NuGet. Afaka mahita fonosana vitsivitsy ianao, fa ny ahy no hampiasaiko.

Rehefa avy mampifandray ny fonosana, tsindrio havanana amin'ny singa "soratra masina"ary fidio ilay entana"Alefaso any amin'ny PackageReference ny packages.config...Β»

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Raha tampoka amin'izao fotoana izao dia manomboka mitebiteby ianao, satria ao amin'ny varavarankelin'ny fananana fonosana dia tsy hisy zavatra manan-danja "Adikao eo an-toerana", izay tena mila apetraka amin'ny sandany diso, dia aza matahotra - mandehana any amin'ny lahatahiry miaraka amin'ny tetikasa, sokafy ny rakitra miaraka amin'ny fanitarana .csproj amin'ny tonian-dahatsoratra mety aminao (mampiasa Notepad++ aho) ary tadiavo ny fidirana momba ny fonosanay ao. Toy izao izy:

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

Ampio fananana amin'izany runtime. Ho toy izao izany:

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

Ankehitriny, rehefa manangana tetikasa, ny rakitra avy amin'ny fonosana dia tsy hadika amin'ny fampirimana vokatra.
Andao handroso bebe kokoa - andeha hojerentsika avy hatrany fa hampiasa zavatra avy amin'ny Revit API ny plugin-ntsika, izay niova rehefa nandeha ny fotoana rehefa navoaka ny dikan-teny vaovao. Eny, na mila manova zavatra ao amin'ny kaody fotsiny isika miankina amin'ny dikan'ny Revit izay anaovanay ny plugin. Mba hamahana ny fahasamihafan'ny kaody toy izany dia hampiasa marika fanangonana misy fepetra isika. Sokafy ny fananana tetikasa, mandehana any amin'ny "fiangonana"ary any an-tsaha"Notation compilation misy fepetraΒ« andao hanoratra R2015.

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Mariho fa ny marika dia tsy maintsy ampiana ho an'ny Debug sy Release configurations.

Eny, raha eo amin'ny varavarankelin'ny fananana isika dia mandeha avy hatrany any amin'ny tabilao "fampiharana"ary any an-tsaha"Default namespaceΒ» esory ny tovana _2015ka ny toerana misy ny anaranay dia manerana izao rehetra izao ary tsy miankina amin'ny anaran'ny fivoriambe:

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Raha ny ahy, amin'ny vokatra farany, ny plugins amin'ny dikan-teny rehetra dia apetraka ao anaty lahatahiry iray, ka ny anaram-pivoriana dia mijanona miaraka amin'ny tovana amin'ny endrika. _20Ρ…Ρ…. Fa azonao atao koa ny manala ny tovana amin'ny anaran'ny fivoriambe raha toa ka tokony ho hita ao anaty lahatahiry samihafa ny rakitra.

Andao ho any amin'ny kaody rakitra Class1.cs ary manaova kaody sasany ao, amin'ny fiheverana ny dikan-teny samihafa amin'ny 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;
        }
    }
}

Noraisiko avy hatrany ny dikan-teny rehetra amin'ny Revit etsy ambony 2015 (izay nisy tamin'ny fotoana nanoratana) ary avy hatrany dia nihevitra ny fisian'ny marika fanangonana fepetra, izay noforonina tamin'ny fampiasana modely mitovy.

Andeha isika hiroso amin'ny zava-dehibe indrindra. Mamorona tetikasa vaovao amin'ny vahaolanay izahay, ho an'ny version of the plugin for Revit 2016 ihany. Averinay daholo ny dingana rehetra voalaza etsy ambony, tsirairay avy, manolo ny isa 2015 amin'ny isa 2016. Fa ny rakitra Class1.cs mamafa amin'ny tetikasa vaovao.

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

File miaraka amin'ny kaody ilaina - Class1.cs - efa manana izany isika ary mila mampiditra rohy mankany amin'izany amin'ny tetikasa vaovao. Misy fomba roa hampidirana rohy:

  1. ELA - tsindrio havanana amin'ny tetikasa ary safidio ny "AddΒ»->Β«Singa efa misy", eo amin'ny varavarankely misokatra, tadiavo ny rakitra ilaina ary fa tsy ny safidy "Add" safidio ny safidy "Ampio ho fifandraisanaΒ»

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

  1. fohy - mivantana ao amin'ny explorer vahaolana, safidio ny rakitra tiana (na ny rakitra, na ny lahatahiry manontolo mihitsy aza) ary tariho amin'ny tetikasa vaovao izany raha mihazona ny fanalahidy Alt. Rehefa misintona ianao dia ho hitanao fa rehefa manindry ny fanalahidy Alt ianao dia hiova avy amin'ny famantarana miampy ho zana-tsipìka ny cursor totozy.
    UPS: Nanao fisafotofotoana kely aho tamin'ity andalana ity - mba hamindra rakitra maromaro tokony hajanonao Shift + Alt!

Aorian'ny fanatanterahana ny dingana dia hanana rakitra ao amin'ny tetikasa faharoa isika Class1.cs miaraka amin'ny kisary mifanaraka amin'izany (zana-tsipìka manga):

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Rehefa manitsy ny kaody ao amin'ny varavarankelin'ny mpanonta dia azonao atao ihany koa ny misafidy izay contexte tetik'asa hanehoana ilay kaody, izay ahafahanao mahita ny kaody ovaina amin'ny marika fanangonana fepetra samihafa:

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Mamorona tetikasa hafa rehetra izahay (2017-2020) amin'ny fampiasana ity tetika ity. Life hack - raha misintona rakitra ao amin'ny Solution Explorer ianao fa tsy avy amin'ny tetikasa fototra, fa avy amin'ny tetikasa izay efa nampidirina ho rohy, dia tsy mila mihazona ny fanalahidy Alt ianao!

Ny safidy voalaza dia tsara mandra-pahatongan'ny fotoana hanampiana dikan-teny vaovao amin'ny plugin na mandra-pahatongan'ny fotoana hanampiana rakitra vaovao amin'ny tetikasa - izany rehetra izany dia lasa mandreraka be. Ary vao haingana aho no tonga saina tampoka ny fomba handaminana izany rehetra izany amin'ny tetikasa iray ary miroso amin'ny fomba faharoa isika

Ny majika ny configurations

Rehefa avy namaky teto ianao, dia mety hihiaka hoe: β€œNahoana ianao no nilazalaza ny fomba voalohany, raha ny faharoa no resahina avy hatrany?!” Ary nofaritako ny zava-drehetra mba hanazava kokoa ny antony ilantsika marika fanangonana misy fepetra sy amin'ny toerana misy ny tetikasantsika. Ary ankehitriny dia lasa mazava kokoa amintsika ny fahasamihafana amin'ny tetikasa tokony hotanterahina, ka tetikasa iray ihany no sisa.

Ary mba hampiharihary kokoa ny zava-drehetra, tsy hamorona tetikasa vaovao izahay, fa hanova ny tetikasanay ankehitriny noforonina tamin'ny fomba voalohany.

Noho izany, voalohany indrindra, esory ny tetikasa rehetra amin'ny vahaolana afa-tsy ny lehibe indrindra (misy ny rakitra mivantana). Ireo. tetikasa ho an'ny version 2016-2020. Sokafy ny lahatahiry miaraka amin'ny vahaolana ary esory ny lahatahiry amin'ireo tetikasa ireo ao.

Manana tetikasa iray sisa amin'ny fanapahan-kevitray izahay - MySuperPluginForRevit_2015. Sokafy ny fananany ary:

  1. Ao amin'ny tabilao "fampiharana"Esory ny tovana amin'ny anaran'ny fivoriambe _2015 (ho hita eo ny antony)
  2. Ao amin'ny tabilao "fiangonanaΒ» esory ny mari-pamantarana fanangonana misy fepetra R2015 avy amin'ny saha mifanaraka amin'izany

Fanamarihana: ny kinova farany an'ny Visual Studio dia manana bug - tsy hita ao amin'ny varavarankelin'ny fananan'ny tetikasa ny marika fanangonana misy fepetra, na dia misy aza izy ireo. Raha sendra ity glitch ity ianao dia mila esorinao amin'ny tanana amin'ny rakitra .csproj izy ireo. Na izany aza, mbola mila miasa amin'izany isika, koa vakio.

Avereno anarana ny tetikasa ao amin'ny varavarankely Solution Explorer amin'ny alΓ lan'ny fanesorana ny tovana _2015 ary esory ny tetikasa amin'ny vahaolana. Ilaina izany mba hitazonana ny filaminana sy ny fihetseham-pon'ny perfectionista! Sokafy ny lahatahiry misy ny vahaolanay, ovao ny anaran'ny lahatahiry tetikasa ao amin'ny fomba mitovy ary avereno ao amin'ny vahaolana ny tetikasa.

Sokafy ny mpitantana ny konfigurasi. US configuration Release amin'ny ankapobeny dia tsy ilaina izany, noho izany dia fafanay izany. Mamorona fanovana vaovao misy anarana efa mahazatra anay izahay R2015, R2016, ..., R2020. Mariho fa tsy mila mandika ny fika avy amin'ny tefy hafa ianao ary tsy mila mamorona tefy tetikasa:

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Mandehana any amin'ny lahatahiry misy ny tetikasa ary sokafy ny rakitra miaraka amin'ny fanitarana .csproj amin'ny tonian-dahatsoratra mety aminao. Raha ny tokony ho izy, azonao atao ihany koa ny manokatra azy ao amin'ny Visual Studio - mila manaisotra ny tetikasa ianao ary avy eo ny zavatra tiana dia ho ao amin'ny menu context:

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Ny fanovana ao amin'ny Visual Studio dia aleo kokoa, satria ny tonian-dahatsoratra dia samy mampifanaraka sy manosika.

Ao amin'ny rakitra dia ho hitantsika ireo singa PropertyGroup - eo amin'ny tampony indrindra dia ny ankapobeny, ary avy eo tonga ny fepetra. Ireo singa ireo dia mametraka ny fananan'ny tetikasa rehefa aorina. Ny singa voalohany, izay tsy misy fepetra, dia mametraka fananana ankapobeny, ary ny singa misy fepetra, araka izany, dia manova ny toetra sasany arakaraka ny fanamafisana.

Mandehana any amin'ny singa mahazatra (voalohany). PropertyGroup ary jereo ny fananana AssemblyName – izany no anaran'ny fiangonana ary tokony hanana azy tsy misy tovana _2015. Raha misy tovana dia esory.

Mitady singa misy fepetra

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

Tsy mila izany izahay fa fafanay.

Singa misy fepetra

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

dia ilaina ny miasa eo amin'ny dingana ny kaody fampandrosoana sy ny debugging. Azonao atao ny manova ny fananany hifanaraka amin'ny filanao - mametraha lalana mivoaka isan-karazany, manova marika fanangonana fepetra, sns.

Andeha isika hamorona singa vaovao PropertyGroup ho an'ny configurations. Amin'ireo singa ireo dia mila mametraka fananana efatra fotsiny isika:

  • OutputPath – fampirimana output. Napetrako ny sanda default binR20xx
  • DefineConstants – marika fanangonana misy fepetra. Tokony hofaritana ny sandany TRACE;R20Ρ…Ρ…
  • TargetFrameworkVersion - dikan-teny amin'ny sehatra. Ny dikan-teny samihafa amin'ny Revit API dia mitaky sehatra samihafa hofaritana.
  • AssemblyName - Anaran'ny fivoriambe (izany hoe anaran-drakitra). Azonao atao ny manoratra ny anaran'ny fivoriambe, fa ho an'ny fahaiza-manao dia manoro hevitra aho hanoratra ny sandany $(AssemblyName)_20Ρ…Ρ…. Mba hanaovana izany, dia nesorintsika teo aloha ny tovana amin'ny anaran'ny fivoriambe

Ny singa manan-danja indrindra amin'ireo singa rehetra ireo dia ny hoe azo adika tsotra fotsiny amin'ny tetikasa hafa izy ireo nefa tsy manova azy ireo mihitsy. Any aoriana ao amin'ny lahatsoratra dia apetako daholo ny ao anatin'ilay rakitra .csproj.

Eny ary, fantaro ny fananan'ny tetikasa - tsy sarotra izany. Fa inona no atao amin'ny tranomboky plug-in (fonosana NuGet). Raha mijery bebe kokoa isika dia ho hitantsika fa voafaritr'ireo singa ireo tranomboky tafiditra ItemGroup. Saingy ny vintana ratsy - ity singa ity dia manodina ny fepetra ho singa PropertyGroup. Angamba izany na dia Visual Studio glitch, fa raha mamaritra singa maromaro ItemGroup miaraka amin'ny fepetra fanamafisam-peo, ary ampidiro rohy samihafa amin'ny fonosana NuGet ao anatiny, avy eo rehefa ovainao ny fanitsiana dia mifandray amin'ny tetikasa avokoa ny fonosana voatondro.

Manampy antsika ilay singa Mifidiana, izay miasa araka ny lojika mahazatra antsika raha-avy-hafa.

Mampiasa singa Mifidiana, mametraka fonosana NuGet samihafa izahay ho an'ny fandrindrana samihafa:

Ny atiny rehetra 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>

Mariho fa ao anatin'ny iray amin'ireo fepetra voalazako ireo fanamafisana roa amin'ny OR. Amin'izany fomba izany dia hampifandray ny fonosana ilaina mandritra ny fanamafisana Debug.

Ary eto isika dia manana ny zava-drehetra tonga lafatra. Averinay ny tetikasa, avelao ny fanamafisana ilaintsika, antsoy ny singa " ao amin'ny menio contexte amin'ny vahaolana (fa tsy ny tetikasa)Avereno ny fonosana NuGet rehetra"ary hitantsika ny fiovan'ny fonosanay.

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Ary tamin'ity dingana ity dia tonga tany amin'ny fiafaran'ny farany aho - mba hanangonana ny fanamafisana rehetra indray mandeha dia afaka mampiasa fivoriambe batch izahay (menu "fiangonanaΒ»->Β«Batch fananganana"), fa rehefa mifamadika ny fanamafisana dia tsy averina ho azy ny fonosana. Ary rehefa manangona ny tetikasa dia tsy mitranga izany, na dia amin'ny teoria aza dia tokony. Tsy nahita vahaolana amin'ity olana ity aho amin'ny fampiasana fomba mahazatra. Ary azo inoana fa bug Visual Studio ihany koa izany.

Noho izany, ho an'ny fivoriambe batch dia nanapa-kevitra ny hampiasa rafitra fivoriambe mandeha ho azy manokana nokleary. Tena tsy tiako izany, satria heveriko ho tafahoatra izany ao anatin'ny rafitry ny fampivoarana plugin, saingy amin'izao fotoana izao dia tsy mahita vahaolana hafa aho. Ary amin'ny fanontaniana hoe "Nahoana Nuke?" Tsotra ny valiny - ampiasaintsika any am-piasana izany.

Noho izany, mandehana any amin'ny lahatahiry ny vahaolana (fa tsy ny tetikasa), tazony ny fanalahidy fanovana ary tsindrio havanana amin'ny toerana tsy misy na inona na inona ao amin'ny lahatahiry - ao amin'ny menio contexte safidio ny singa "Sokafy ny varavarankely PowerShell eto".

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Raha tsy nametraka azy io ianao nokleary, dia soraty aloha ny baiko

dotnet tool install Nuke.GlobalTool –global

Soraty izao ny baiko nokleary ary hasaina ianao hanamboatra nokleary ho an'ny tetikasa ankehitriny. Tsy haiko ny fomba hanoratana izany amin'ny teny Rosiana amin'ny fomba marina kokoa - amin'ny teny anglisy dia hosoratana hoe Could not find .nuke file. Te-hanamboatra fananganana ve ianao? [y/n]

Tsindrio ny lakile Y ary mbola hisy zavatra fisie mivantana. Mila ny safidy tsotra indrindra mampiasa MSBuild, ka mamaly toy ny ao amin'ny pikantsary izahay:

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Andao ho any amin'ny Visual Studio, izay hanosika antsika hamerina ny vahaolana, satria nisy tetikasa vaovao nampiana azy. Averinay indray ny vahaolana ary hitanay fa manana tetikasa izahay manao izay misy rakitra iray ihany no mahaliana anay - Build.cs

Manao tetikasa plugin iray izahay miaraka amin'ny fanangonana ho an'ny dikan-teny samihafa amin'ny Revit/AutoCAD

Sokafy ity rakitra ity ary manorata script hananganana ny tetikasa ho an'ny configurations rehetra. Eny, na ampiasao ny script-ko, izay azonao ovaina mifanaraka amin'ny filanao:

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

Miverina any amin'ny varavarankely PowerShell izahay ary manoratra indray ny baiko nokleary (azonao atao ny manoratra ny baiko nokleary manondro ny ilaina Target. Saingy manana iray isika Target, izay mandeha amin'ny alΓ lan'ny default). Aorian'ny fanindriana ny bokotra Enter, dia hahatsapa ho toy ny tena mpijirika isika, satria, toy ny amin'ny sarimihetsika, ny tetikasantsika dia hangonina ho azy amin'ny fanamafisana samihafa.

Raha ny marina, azonao atao ny mampiasa PowerShell mivantana avy amin'ny Visual Studio (menu "ViewΒ»->Β«Varavarankely hafaΒ»->Β«Package Manager Console"), fa ny zava-drehetra dia ho mainty sy fotsy, izay tsy dia mety loatra.

Izany no mamarana ny lahatsoratro. Azoko antoka fa azonao atao ny mamantatra ny safidy ho an'ny AutoCAD. Manantena aho fa hahita ny "mpanjifa" azy ny fitaovana aseho eto.

Fidio ny Fiteninao

Source: www.habr.com

Add a comment