Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

Ke hoʻomohala nei i nā plugins no nā noi CAD (i ko'u hihia ʻo kēia ʻo AutoCAD, Revit a me Renga) i ka wā lōʻihi, ʻike ʻia kahi pilikia - ua hoʻokuʻu ʻia nā mana hou o nā polokalamu, pono e hoʻololi i kā lākou API a me nā mana hou o nā plugins.

Inā loaʻa iā ʻoe hoʻokahi wale nō plugin a i ʻole ʻoe he mea hoʻomaka i aʻo iā ʻoe iho i kēia mea, hiki iā ʻoe ke hana i kope o ka papahana, hoʻololi i nā wahi kūpono i loko a hoʻohui i kahi mana hou o ka plugin. No laila, ʻo ka hoʻololi hou ʻana i ke code e hoʻonui nui i nā kumukūʻai hana.

Ke loaʻa iā ʻoe ka ʻike a me ka ʻike, e ʻike ʻoe i nā ala he nui e hoʻokaʻawale i kēia kaʻina hana. Ua hele au i kēia ala a makemake wau e haʻi iā ʻoe i kaʻu mea i hoʻopau ai a pehea ka maʻalahi.

ʻO ka mea mua, e nānā kāua i kahi ʻano i maopopo a ua hoʻohana au no ka manawa lōʻihi.

Nā loulou i nā faila papahana

A e hana maʻalahi nā mea āpau, ʻike a hoʻomaopopo ʻia, e wehewehe wau i nā mea āpau me ka hoʻohana ʻana i kahi hiʻohiʻona abstract o ka hoʻomohala plugin.

E wehe kākou i Visual Studio (Loaʻa iaʻu ka mana Community 2019. A ʻae - ma ka ʻōlelo Lūkini) a hana i kahi hopena hou. E kāhea kākou iā ia MySuperPluginForRevit

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

E hana mākou i kahi plugin no Revit no nā mana 2015-2020. No laila, e hana mākou i kahi papahana hou i ka hopena (Net Framework Class Library) a kāhea aku MySuperPluginForRevit_2015

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

Pono mākou e hoʻohui i nā loulou i ka Revit API. ʻOiaʻiʻo, hiki iā mākou ke hoʻohui i nā loulou i nā faila kūloko (pono mākou e hoʻokomo i nā SDK pono āpau a i ʻole nā ​​mana āpau o Revit), akā e hahai koke mākou i ke ala kūpono a hoʻopili i ka pūʻulu NuGet. Hiki iā ʻoe ke loaʻa i nā pūʻolo liʻiliʻi, akā e hoʻohana wau i kaʻu iho.

Ma hope o ka hoʻopili ʻana i ka pūʻolo, kaomi ʻākau i ka mea "kūmole"a koho i ka mea"E hoʻoneʻe i packages.config i PackageReference...»

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

Inā hikiwawe i kēia manawa hoʻomaka ʻoe e makaʻu, no ka mea, ʻaʻohe mea koʻikoʻi i loko o ka puka makani waiwai.E kope ma ka ʻāina", pono mākou e hoʻonohonoho i ka waiwai wahahee, a laila mai hopohopo - e hele i ka waihona me ka papahana, wehe i ka faila me ka .csproj extension i loko o kahi mea hoʻoponopono kūpono iā ʻoe (hoʻohana wau i ka Notepad++) a loaʻa kahi komo e pili ana i kā mākou pūʻolo ma laila. Penei kona ano i keia manawa:

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

Hoʻohui i kahi waiwai iā ia manawa holo. E like me kēia:

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

I kēia manawa, i ke kūkulu ʻana i kahi papahana, ʻaʻole e kope ʻia nā faila mai ka pōʻai i ka waihona puka.
E hele hou aku - e noʻonoʻo koke e hoʻohana kā mākou plugin i kekahi mea mai ka Revit API, i hoʻololi ʻia i ka wā i hoʻokuʻu ʻia ai nā mana hou. ʻAe, a i ʻole pono mākou e hoʻololi i kekahi mea i ke code e pili ana i ka mana o Revit no mākou e hana nei i ka plugin. No ka hoʻoholo i nā ʻokoʻa like ʻole i ke code, e hoʻohana mākou i nā hōʻailona hōʻuluʻulu kūlana. E wehe i nā waiwai o ka papahana, e hele i ka pā "Hōʻuluʻulu"a ma ke kula"Palapala hōʻuluʻulu kūlana"E kākau kāua R2015.

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

E hoʻomaopopo pono e hoʻohui ʻia ka hōʻailona no nā hoʻonohonoho Debug a me Release.

ʻAe, ʻoiai mākou i ka puka makani waiwai, hele koke mākou i ka " tabKa hoʻohana"a ma ke kula"Mokuna inoa paʻamau» e wehe i ka hope _2015no laila, ʻokoʻa ko mākou inoa inoa a kūʻokoʻa i ka inoa hui:

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

I koʻu hihia, i ka huahana hope loa, ua hoʻokomo ʻia nā plugins o nā ʻano āpau i hoʻokahi waihona, no laila e noho mau koʻu mau inoa hui me ka suffix o ke ʻano. _20хх. Akā hiki iā ʻoe ke wehe i ka suffix mai ka inoa hui inā manaʻo ʻia nā faila ma nā waihona ʻokoʻa.

E hele kāua i ke code file Papa1.cs a hoʻohālikelike i kekahi code ma laila, e noʻonoʻo ana i nā ʻano like ʻole o 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;
        }
    }
}

Ua noʻonoʻo koke wau i nā mana āpau o Revit ma luna o ka mana 2015 (i loaʻa i ka manawa kākau) a noʻonoʻo koke i ka hele ʻana o nā hōʻailona hōʻuluʻulu kūlana, i hana ʻia me ka hoʻohana ʻana i ka hoʻohālike like.

E neʻe kākou i ka mea nui. Hoʻokumu mākou i kahi papahana hou i kā mākou hopena, no ka mana wale nō o ka plugin no Revit 2016. Ke hana hou nei mākou i nā ʻanuʻu āpau i hōʻike ʻia ma luna nei, e hoʻololi i ka helu 2015 me ka helu 2016. Akā ʻo ka faila. Papa1.cs holoi mai ka papahana hou.

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

faila me ke code i makemake ʻia - Papa1.cs - ua loaʻa iā mākou a pono mākou e hoʻokomo i kahi loulou i loko o kahi papahana hou. ʻElua ala e hoʻokomo ai i nā loulou:

  1. lōʻihi - kaomi ʻākau ma ka papahana a koho "ho'ohui»->«ʻElemu e kū nei", ma ka puka aniani e wehe ai, e ʻimi i ka faila i makemake ʻia a ma kahi o ke koho "ho'ohui" koho i ke koho "Hoʻohui e like me ka pilina»

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

  1. Pōkole - pololei i ka mea ʻimi hoʻonā, koho i ka faila i makemake ʻia (a i ʻole nā ​​faila, a i ʻole nā ​​faila holoʻokoʻa) a kauo iā ia i kahi papahana hou i ka wā e paʻa ana i ke kī Alt. Ke kauo nei ʻoe, e ʻike ʻoe i ka wā e paʻi ai ʻoe i ke kī Alt, e hoʻololi ka cursor ʻiole mai kahi hōʻailona hoʻohui i kahi pua.
    UPD: Ua hana au i kahi huikau ma kēia paukū - e hoʻololi i kekahi mau faila pono ʻoe e paʻa Kealohalo + Alt!

Ma hope o ka hoʻokō ʻana i ke kaʻina hana, e loaʻa iā mākou kahi faila ma ka papahana ʻelua Papa1.cs me ka ikona pili (pua uliuli):

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

I ka hoʻoponopono ʻana i ke code ma ka puka makani hoʻoponopono, hiki iā ʻoe ke koho i ka pōʻaiapili papahana e hōʻike i ke code i loko, e ʻae iā ʻoe e ʻike i ke code e hoʻoponopono ʻia ma lalo o nā hōʻailona hōʻuluʻulu kūlana ʻokoʻa:

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

Hana mākou i nā papahana ʻē aʻe a pau (2017-2020) me kēia hoʻolālā. Life hack - inā ʻoe e kauo i nā faila i ka Solution Explorer ʻaʻole mai ka papahana kumu, akā mai ka papahana kahi i hoʻokomo ʻia ai lākou ma ke ʻano he loulou, a laila ʻaʻole pono ʻoe e paʻa i ke kī Alt!

Maikaʻi ka koho i wehewehe ʻia a hiki i ka manawa o ka hoʻohui ʻana i kahi mana hou o ka plugin a i ka manawa o ka hoʻohui ʻana i nā faila hou i ka papahana - lilo kēia mau mea i mea paʻakikī loa. A i kēia manawa ua ʻike koke wau pehea e hoʻokaʻawale i nā mea āpau me hoʻokahi papahana a ke neʻe nei mākou i ke ala ʻelua

ʻO ke kilokilo o nā hoʻonohonoho

Ma hope o ka heluhelu ʻana ma aneʻi, hiki iā ʻoe ke hoʻōho, "No ke aha ʻoe i wehewehe ai i ke ʻano mua, inā pili koke ka ʻatikala i ka lua?!" A wehewehe au i nā mea a pau e maopopo ai ke kumu e pono ai mākou i nā hōʻailona hōʻuluʻulu kūlana a ma nā wahi e ʻokoʻa ai kā mākou papahana. A i kēia manawa ua maopopo iā mākou nā ʻokoʻa o nā papahana e pono ai mākou e hoʻokō, waiho wale i hoʻokahi papahana.

A i mea e maopopo ai nā mea a pau, ʻaʻole mākou e hana i kahi papahana hou, akā e hoʻololi i kā mākou papahana o kēia manawa i hana ʻia ma ke ala mua.

No laila, ʻo ka mea mua, wehe mākou i nā papahana āpau mai ka hopena koe wale nō ka mea nui (i loaʻa nā faila pololei). ʻO kēlā mau. nā papahana no nā mana 2016-2020. E wehe i ka waihona me ka hopena a holoi i nā waihona o kēia mau papahana ma laila.

Hoʻokahi papahana i koe i kā mākou hoʻoholo - MySuperPluginForRevit_2015. E wehe i kona mau waiwai a:

  1. Ma ka ʻaoʻao “Ka hoʻohana"E wehe i ka suffix mai ka inoa hui _2015 (e maopopo ana ke kumu ma hope)
  2. Ma ka ʻaoʻao “Hōʻuluʻulu» wehe i ka hōʻailona hōʻuluʻulu kūlana R2015 mai ke kahua pili

'Ōlelo Aʻo: ʻO ka mana hou loa o Visual Studio he pahu - ʻaʻole i hōʻike ʻia nā hōʻailona hōʻuluʻulu kūlana ma ka puka aniani waiwai o ka papahana, ʻoiai aia lākou. Inā ʻike ʻoe i kēia glitch, pono ʻoe e wehe iā lākou me ka lima mai ka faila .csproj. Eia naʻe, pono mākou e hana i loko, no laila e heluhelu.

E kapa hou i ka papahana ma ka puka aniani Solution Explorer ma ka wehe ʻana i ka suffix _2015 a laila wehe i ka papahana mai ka hoʻonā. Pono kēia e mālama i ka hoʻonohonoho a me nā manaʻo o ka perfectionists! Wehe mākou i ka waihona o kā mākou hopena, hoʻololi hou i ka waihona papahana ma laila ma ke ala like a hoʻouka hou i ka papahana i ka hopena.

E wehe i ka luna hoʻonohonoho. hoʻonohonoho US Release ma ke kumu, ʻaʻole pono ia, no laila holoi mākou. Hana mākou i nā hoʻonohonoho hou me nā inoa i kamaʻāina mua iā mākou R2015, R2016,..., R2020. E hoʻomaopopo ʻaʻole pono ʻoe e kope i nā hoʻonohonoho mai nā hoʻonohonoho ʻē aʻe a ʻaʻole pono ʻoe e hana i nā hoʻonohonoho papahana:

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

E hele i ka waihona me ka papahana a wehe i ka faila me ka hoʻonui .csproj ma kahi hoʻoponopono kūpono iā ʻoe. Ma ke ala, hiki iā ʻoe ke wehe iā ia ma Visual Studio - pono ʻoe e wehe i ka papahana a laila aia ka mea i makemake ʻia i ka papa kuhikuhi:

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

ʻOi aku ka maikaʻi o ka hoʻoponopono ʻana ma Visual Studio, no ka mea, hoʻoponopono ka mea hoʻoponopono a hoʻoikaika.

Ma ka faila e ʻike mākou i nā mea Hui Waiwai - ma ka luna loa ka mea maʻamau, a laila hiki mai nā kūlana. Hoʻonohonoho kēia mau mea i nā waiwai o ka papahana ke kūkulu ʻia. ʻO ka mea mua, ʻaʻohe kūlana, hoʻonohonoho i nā waiwai maʻamau, a me nā mea me nā kūlana, no laila, e hoʻololi i kekahi mau waiwai ma muli o nā hoʻonohonoho.

E hele i ka mea maʻamau (mua). Hui Waiwai a nana i ka waiwai Inoa Hui - ʻo ia ka inoa o ka ʻaha a pono e loaʻa iā mākou me ka ʻole o ka suffix _2015. Inā he suffix, e wehe.

Ke ʻimi nei i kahi mea me kahi kūlana

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

ʻAʻole pono mākou - holoi mākou.

ʻElemu me ke kūlana

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

Pono e hana ma ke kahua o ka hoʻomohala code a me ka debugging. Hiki iā ʻoe ke hoʻololi i kāna mau waiwai e kūpono i kāu mau pono - hoʻonoho i nā ala puka like ʻole, hoʻololi i nā hōʻailona hoʻohui kūlana, etc.

I kēia manawa, e hana kākou i nā mea hou Hui Waiwai no kā mākou hoʻonohonoho. Ma kēia mau mea pono mākou e hoʻonoho i ʻehā mau waiwai:

  • Ala Huakaʻi – waihona puka. Hoʻonoho wau i ka waiwai paʻamau binR20xx
  • DefineConstants - nā hōʻailona hōʻuluʻulu kūlana. Pono e kuhikuhi ʻia ka waiwai KAHUA;R20хх
  • TargetFrameworkVersion – mana o ka paepae. Pono nā mana ʻokoʻa o ka Revit API i nā paepae like ʻole e kuhikuhi ʻia.
  • Inoa Hui - inoa hui (ʻo ia ka inoa faila). Hiki iā ʻoe ke kākau i ka inoa pololei o ka ʻaha, akā no ka versatility ke paipai nei au e kākau i ka waiwai $(AssemblyName)_20хх. No ka hana ʻana i kēia, ua wehe mua mākou i ka suffix mai ka inoa hui

ʻO ka hiʻohiʻona koʻikoʻi o kēia mau mea āpau, hiki ke kope kope ʻia i nā papahana ʻē aʻe me ka ʻole o ka hoʻololi ʻana iā lākou. Ma hope o ka ʻatikala e hoʻopili wau i nā mea āpau o ka faila .csproj.

ʻAe, ua ʻike mākou i nā waiwai o ka papahana - ʻaʻole paʻakikī. Akā he aha ka mea e hana ai me nā hale waihona puke plug-in (NuGet packages). Inā mākou e nānā hou aku, e ʻike mākou ua kuhikuhi ʻia nā hale waihona puke i loko o nā mea Pūʻulu Mea. Akā ʻo ka pōʻino - hana hewa kēia mea i nā kūlana ma ke ʻano he mea Hui Waiwai. Malia paha he glitch Visual Studio kēia, akā inā ʻoe e kuhikuhi i kekahi mau mea Pūʻulu Mea me nā kūlana hoʻonohonoho, a hoʻokomo i nā loulou like ʻole i nā pūʻolo NuGet i loko, a laila ke hoʻololi ʻoe i ka hoʻonohonoho ʻana, pili nā pūʻolo āpau i ʻōlelo ʻia i ka papahana.

Hele mai ka mea e kōkua iā mākou koho, e hana ana e like me kā mākou loiloi maʻamau inā-a laila.

Ke hoʻohana nei i ka mea koho, hoʻonoho mākou i nā pūʻolo NuGet like ʻole no nā hoʻonohonoho like ʻole:

Nā mea a pau 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>

E ʻoluʻolu e hoʻomaopopo i loko o kekahi o nā kūlana ua kuhikuhi wau i ʻelua hoʻonohonoho ma o A I OLE. Ma kēia ala e hoʻopili ʻia ka pūʻolo i makemake ʻia i ka wā hoʻonohonoho Hoʻopiʻi.

A maʻaneʻi ua kokoke mākou i nā mea āpau. Hoʻihoʻi mākou i ka papahana, hiki ke hoʻonohonoho i ka hoʻonohonoho e pono ai mākou, e kāhea i ka mea "i ka papa kuhikuhi o ka hopena (ʻaʻole ka papahana)Hoʻihoʻi hou i nā pūʻolo NuGet a pau"a ʻike mākou i ka loli ʻana o kā mākou ʻeke.

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

A i kēia manawa ua hele au i kahi hopena make - i mea e hōʻiliʻili ai i nā hoʻonohonoho āpau i ka manawa hoʻokahi, hiki iā mākou ke hoʻohana i ka hui hui (menu "Hōʻuluʻulu»->«Kūkulu pūʻulu"), akā i ka hoʻololi ʻana i nā hoʻonohonoho, ʻaʻole hoʻihoʻi ʻia nā pūʻolo. A i ka hui ʻana i ka papahana, ʻaʻole hiki kēia, ʻoiai, ma ke kumumanaʻo, pono ia. ʻAʻole i loaʻa iaʻu kahi hopena i kēia pilikia me ka hoʻohana ʻana i nā ala maʻamau. A ʻo ka mea nui paha he kino Visual Studio kēia.

No laila, no ka hui pūʻulu, ua hoʻoholo ʻia e hoʻohana i kahi ʻōnaehana hui kūikawā kūikawā Nuke. ʻAʻole wau i makemake i kēia no ka mea manaʻo wau he overkill ma ke ʻano o ka hoʻomohala ʻana i ka plugin, akā i kēia manawa ʻaʻole wau e ʻike i kahi hopena ʻē aʻe. A i ka nīnau "No ke aha ʻo Nuke?" He maʻalahi ka pane - hoʻohana mākou ma ka hana.

No laila, e hele i ka waihona o kā mākou hopena (ʻaʻole ka papahana), e paʻa i ke kī Shift a kaomi pololei ma kahi hakahaka i loko o ka waihona - ma ka papa kuhikuhi koho i ka mea "E wehe i ka puka makani PowerShell maanei".

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

Inā ʻaʻole i hoʻokomo ʻia nuke, a laila e kākau mua i ke kauoha

dotnet tool install Nuke.GlobalTool –global

Ano e kakau i ke kauoha nuke a e koi ʻia ʻoe e hoʻonohonoho nuke no ka papahana o kēia manawa. ʻAʻole maopopo iaʻu pehea e kākau pololei ai i kēia ma ka ʻōlelo Lūkini - ma ka ʻōlelo Pelekania e kākau ʻia ʻAʻole hiki ke loaʻa ka faila .nuke. Makemake ʻoe e hoʻonohonoho i kahi kūkulu? [y/n]

E kaomi i ke kī Y a laila e loaʻa nā mea hoʻonohonoho pololei. Pono mākou i ka koho maʻalahi e hoʻohana MSBuild, no laila pane mākou e like me ke kiʻi:

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

E hele kāua i Visual Studio, kahi e koi ai iā mākou e hoʻouka hou i ka hopena, ʻoiai ua hoʻohui ʻia kahi papahana hou iā ia. Hoʻouka hou mākou i ka hopena a ʻike mākou he papahana kā mākou hana kahi i makemake ai mākou i hoʻokahi faila - Build.cs

Hana mākou i hoʻokahi papahana plugin me ka hui ʻana no nā ʻano like ʻole o Revit/AutoCAD

E wehe i kēia faila a kākau i kahi palapala e kūkulu i ka papahana no nā hoʻonohonoho āpau. ʻAe, a i ʻole e hoʻohana i kaʻu palapala, hiki iā ʻoe ke hoʻoponopono e kūpono i kāu mau pono:

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

Hoʻi mākou i ka puka makani PowerShell a kākau hou i ke kauoha nuke (hiki iā ʻoe ke kākau i ke kauoha nuke e hōʻike ana i ka mea e pono ai pale umauma hoʻokahi. Akā hoʻokahi mākou pale umauma hoʻokahi, e holo ana ma ka paʻamau). Ma hope o ke kaomi ʻana i ke kī Enter, e manaʻo mākou e like me nā hackers maoli, no ka mea, e like me ke kiʻiʻoniʻoni, e hui pū ʻia kā mākou papahana no nā hoʻonohonoho like ʻole.

Ma ke ala, hiki iā ʻoe ke hoʻohana pololei iā PowerShell mai Visual Studio (menu "nānaina»->«Nā puka makani ʻē aʻe»->«Pūʻulu Luna Hoʻokele"), akā aia nā mea āpau i ka ʻeleʻele a me ke keʻokeʻo, ʻaʻole kūpono loa.

Hoʻopau kēia i kaʻu ʻatikala. Manaʻo wau hiki iā ʻoe ke noʻonoʻo i ke koho no AutoCAD iā ʻoe iho. Manaʻo wau e loaʻa nā mea i hōʻike ʻia ma ʻaneʻi i kāna mau "mea kūʻai".

Nā mea hou aku!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka