
Sa paghimo og mga plugin para sa mga aplikasyon sa CAD ( (Kini ang AutoCAD, Revit ug Renga) sa paglabay sa panahon, usa ka problema ang motumaw - bag-ong mga bersyon sa mga programa ang gipagawas, ang ilang API giusab ug bag-ong mga bersyon sa mga plugin kinahanglan nga himuon.
Kon usa ra ka plugin ang naa nimo o bag-o ka pa lang nagsugod sa paggamit niini, mahimo ka lang mohimo og kopya sa proyekto, usbon ang mga kinahanglanon nga bahin, ug maghimo og bag-ong bersyon sa plugin. Tungod niini, ang sunod nga mga pagbag-o sa code moresulta sa dakong pagtaas sa gasto sa trabaho.
Samtang makakuha ka og kasinatian ug kahibalo, makakita ka og daghang mga paagi aron awtomatiko kini nga proseso. Gisubay ko na kini nga dalan ug gusto nakong ipaambit kanimo ang akong nahunahunaan ug kung unsa kini ka kombenyente.
Magsugod ta sa usa ka pamaagi nga klaro na ug dugay na nakong gigamit.
Mga link sa mga file sa proyekto
Aron mahimong simple, klaro, ug masabtan ang tanan, akong ihulagway ang tanan gamit ang usa ka abstract nga ehemplo sa paghimo og plugin.
Ablihi nato ang Visual Studio (naa koy Community 2019 nga bersyon. Ug oo, naa kini sa Russian) ug maghimo og bag-ong solusyon. Tawgon nato kini nga AkongSuperPluginParaSaRevit

Maghimo kita og Revit plugin para sa mga bersyon 2015-2020. Busa, maghimo kita og bag-ong proyekto (Net Framework Class Library) sa solusyon ug nganlan kini og AkongSuperPluginParaSaRevit_2015

Kinahanglan natong idugang ang mga reperensya sa Revit API. Siyempre, mahimo natong idugang ang mga reperensya sa mga lokal nga file (kinahanglan nimong i-install ang tanan nga gikinahanglan nga SDK o tanan nga bersyon sa Revit), apan atong kuhaon ang husto nga dalan ug ilakip ang NuGet package. Makakita ka og daghang mga pakete, apan gamiton nako ang akoa.
Human makonektar ang pakete, i-right-click ang butang nga "mga pakisayran" ug pilia ang butang " sa menuIbalhin ang packages.config ngadto sa PackageReference…»

Kon kalit lang nga magsugod ka og kalisang niining puntoha, kay sa bintana sa mga kabtangan sa pakete walay importanteng butang nga "Kopyaha sa lokal", nga kinahanglan gyud natong ibutang sa bili bakak nga mga, ayaw kabalaka – adto sa project folder, ablihi ang .csproj file sa imong paboritong editor (Notepad++ ang akong gigamit), ug pangitaa ang entry para sa atong package. Kini karon morag ingon ani:
<PackageReference Include="ModPlus.Revit.API.2015">
<Version>1.0.0</Version>
</PackageReference>Atong dugangan og property niini oras sa pagdaganKini tan-awon sama niini:
<PackageReference Include="ModPlus.Revit.API.2015">
<Version>1.0.0</Version>
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>Karon, kung maghimo og proyekto, ang mga file gikan sa pakete dili na kopyahon ngadto sa output folder.
Padayon ta – atong handurawon dayon nga ang atong plugin mogamit og usa ka butang gikan sa Revit API nga nausab sa mga pagpagawas sa bag-ong mga bersyon. O tingali kinahanglan lang natong usbon ang usa ka butang sa code depende sa bersyon sa Revit nga atong gi-develop sa plugin. Aron masulbad ang ingon nga mga kalainan sa code, mogamit kita og mga conditional compilation symbols. Ablihi ang mga project properties ug adto sa "Assembly"ug sa bukid"Mga notasyon sa kondisyonal nga kompilasyon» magsulat ta R2015.

Palihug timan-i nga ang simbolo kinahanglan idugang para sa parehong mga konfigurasyon sa Debug ug Release.
Aw, samtang naa ta sa bintana sa mga kabtangan, moadto dayon ta sa tab nga "Paggamit"ug sa bukid"Default nga ngalan nga espasyo» tangtanga ang hulapi _2015aron ang atong namespace unibersal ug independente sa ngalan sa assembly:

Sa akong kaso, sa katapusang produkto, ang mga plugin sa tanang bersyon gibutang sa usa ka folder, mao nga ang mga ngalan sa akong assembly magpabilin nga adunay hulapi sa porma _20ххApan mahimo usab nimo tangtangon ang hulapi gikan sa ngalan sa assembly kung gusto nimo pangitaon ang mga file sa lainlaing mga folder.
Padayon ta sa file code Klase1.cs ug among gisundog ang pipila ka code didto, nga gikonsiderar ang lainlaing mga bersyon sa 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;
}
}
}Gikonsiderar dayon nako ang tanang bersyon sa Revit nga mas taas pa sa 2015 (nga anaa pa sa panahon sa pagsulat niini) ug gikonsiderar dayon ang presensya sa mga simbolo sa kondisyonal nga compilation, nga akong gihimo gamit ang parehas nga template.
Karon, atong adtoon ang pangunang punto. Paghimo og bag-ong proyekto sa atong solusyon, ning higayona para sa Revit 2016 nga bersyon sa plugin. Balika ang tanang lakang nga gihulagway sa ibabaw, ilisan ang numero nga 2015 og 2016. Apan ang file Klase1.cs Atong papason kini gikan sa bag-ong proyekto.

File nga adunay gikinahanglan nga code – Klase1.cs – Naa na tay usa ug kinahanglan lang nato nga isal-ot ang link niini sa bag-ong proyekto. Adunay duha ka paagi sa pagsal-ot og mga link:
- Taas – i-right-click ang proyekto ug pilia ang “Idugang»->«Naglungtad nga elemento", sa bintana nga moabli, atong makit-an ang gikinahanglan nga file ug imbes nga ang opsyon "Idugang"pilia ang opsyon"Idugang isip sumpay»

- Mubo – Diha mismo sa Solution Explorer, pilia ang gitinguha nga file (o bisan ang mga file, o bisan ang tibuok nga mga folder) ug i-drag kini ngadto sa bag-ong proyekto samtang gipugngan ang Alt key. Samtang nag-drag ka, imong mamatikdan nga ang pagpindot sa Alt key mag-usab sa cursor sa mouse gikan sa plus sign ngadto sa arrow.
UPS: Nagdugang kog gamay nga kalibog ani nga paragraph - para makabalhin og daghang files kinahanglan nimo nga i-hold Pagbalhin + Alt!
Human makompleto ang proseso, aduna na kitay file sa ikaduhang proyekto. Klase1.cs uban sa katugbang nga icon (asul nga pana):

Kon mag-edit og code sa editor window, mahimo ka usab nga mopili kon asa nga konteksto sa proyekto ipakita ang code, nga magtugot kanimo sa pagtan-aw kon giunsa pag-edit ang code ubos sa lain-laing mga simbolo sa conditional compilation:

Atong himoon ang tanang ubang mga proyekto (2017-2020) gamit kini nga proseso. Usa ka dali nga tip: kon imong i-drag ang mga file sa Solution Explorer dili gikan sa base project, kondili gikan sa usa ka proyekto diin kini gisulod na isip link, dili na kinahanglan nga pugson pa ang Alt key!
Ang gihulagway nga pamaagi molihok og maayo hangtod nga makadugang ka og bag-ong bersyon sa plugin o makadugang og bag-ong mga file sa proyekto—ang tanan mahimong makalaay kaayo. Apan bag-ohay lang, kalit nakong naamgohan kung unsaon pagdumala kining tanan sa usa lang ka proyekto, ug mopadayon na kita sa ikaduhang pamaagi.
Ang Salamangka sa mga Konfigurasyon
Human makabasa hangtod dinhi, basin makaingon ka, "Ngano man nga gihulagway pa nimo ang unang pamaagi nga ang artikulo bahin na man sa ikaduha?!" Gihulagway nako ang tanan aron mas klaro kung nganong kinahanglan nato ang mga simbolo sa conditional compilation ug asa managlahi ang atong mga proyekto. Ug karon mas klaro na kung unsang mga kalainan sa proyekto ang kinahanglan natong ipatuman, nga usa na lang ka proyekto ang nahabilin.
Ug aron mas klaro, dili mi maghimo og bag-ong proyekto, apan mohimo og mga pagbag-o sa among kasamtangang proyekto nga gihimo sa unang paagi.
Busa, una, papasa ang tanang proyekto gikan sa solusyon gawas sa panguna (ang adunay sulod nga aktuwal nga mga file). Kini nagpasabot sa mga proyekto para sa mga bersyon 2016-2020. Ablihi ang folder sa solusyon ug papasa ang mga folder para niini nga mga proyekto.
Usa na lang ka proyekto ang nahabilin sa solusyon - AkongSuperPluginParaSaRevit_2015Among giablihan ang mga kabtangan niini ug:
- Sa tab nga "Paggamit" tangtanga ang hulapi gikan sa ngalan sa asembliya _2015 (mas masabtan ra unya nganong ingon ani)
- Sa tab nga "Assembly» tangtanga ang simbolo sa kondisyonal nga pag-compile R2015 gikan sa katugbang nga natad
Mubo nga sulat: Ang pinakabag-ong bersyon sa Visual Studio adunay bug: ang mga simbolo sa conditional compilation wala gipakita sa bintana sa mga kabtangan sa proyekto, bisan kung naa kini. Kung makasinati ka niini nga bug, kinahanglan nimo nga mano-mano nga tangtangon kini gikan sa .csproj file. Bisan pa, kinahanglan gihapon naton nga magtrabaho niini, busa padayon sa pagbasa.
Ilisi ang ngalan sa proyekto sa bintana sa Solution Explorer, kuhaa ang hulapi _2015 Ug dayon papasa ang proyekto gikan sa solusyon. Kini gikinahanglan aron mapadayon ang kahusay ug ang mga pagbati sa perpeksyonista! Ablihi ang atong folder sa solusyon, usba ang ngalan sa folder sa proyekto didto sa parehas nga paagi, ug ibalik ang proyekto sa solusyon.
Ablihi ang Configuration Manager. Kinahanglan nato og configuration release Dili nato kini kinahanglan sa prinsipyo, busa atong papason kini. Maghimo kita og bag-ong mga konfigurasyon gamit ang mga ngalan nga atong naandan na. R2015, R2016, ..., R2020Palihug timan-i nga dili nimo kinahanglan nga kopyahon ang mga parameter gikan sa ubang mga configuration ug dili nimo kinahanglan nga maghimo og mga configuration sa proyekto:

Adto sa project folder ug ablihi ang .csproj file sa imong paboritong editor. Mahimo usab nimo kini ablihan sa Visual Studio—i-unload ang proyekto, dayon pilia ang angay nga opsyon sa context menu:

Mas maayo pa gani ang pag-edit sa Visual Studio, kay ang editor parehong mo-align ug mohatag og mga hint.
Sa file atong makita ang mga elemento – ang kinatibuk-ang elemento anaa sa pinakataas, gisundan sa mga kondisyonal nga elemento. Kini nga mga elemento naghubit sa mga kabtangan sa proyekto kung kini gitukod. Ang unang elemento, nga walay kondisyon, naghubit sa kinatibuk-ang mga kabtangan, samtang ang mga kondisyonal nga elemento, matag usa, nag-usab sa pipila ka mga kabtangan depende sa konfigurasyon.
Moadto kita sa komon (unang) elemento Grupo sa Propyedad ug tan-awa ang kabtangan Ngalan sa Asembliya – kini ang ngalan sa asembliya ug kini kinahanglan nga walay hulapi _2015Kon naa may hulapi, among tangtangon kini.
Pangita og elemento nga adunay kondisyon
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">Dili nato kini kinahanglan - atong papason kini.
Elemento nga adunay kondisyon
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">Kinahanglan nimo kini para sa pag-develop ug pag-debug. Mahimo nimong ipasibo ang mga kabtangan niini aron mohaom sa imong mga panginahanglan—pagbutang og lain-laing mga output path, pag-usab sa mga conditional compilation symbols, ug uban pa.
Karon maghimo kita og bag-ong mga elemento Grupo sa Propyedad para sa atong mga configuration. Niini nga mga elemento, upat ra ka properties ang kinahanglan natong i-set:
- Dalan sa Paggawas – output folder. Gibutang nako ang default nga kantidad. binR20xx
- Ilha ang mga Konstante – mga simbolo sa kondisyonal nga pag-compile. Kinahanglan hatagan og bili TRACE;R20хх
- TargetFrameworkBersyon – bersyon sa plataporma. Kinahanglan nga ipiho ang lainlaing mga plataporma alang sa lainlaing mga bersyon sa Revit API.
- Ngalan sa Asembliya – ang ngalan sa asembliya (pananglitan, ang ngalan sa file). Mahimo nimong isulat ang eksaktong ngalan sa asembliya nga imong gikinahanglan, apan para sa kabag-ohan, girekomenda nako ang pagsulat sa bili $(AssemblyName)_20ххMao kini ang hinungdan nganong among gikuha kaniadto ang hulapi gikan sa ngalan sa assembly.
Ang labing importante nga bahin niining tanan nga mga elemento mao nga kini dali nga makopya sa ubang mga proyekto nga walay bisan unsang pagbag-o. Sa ulahi sa artikulo, akong ilakip ang tibuok nga sulod sa .csproj file.
Okay, nahusay na nato ang mga kabtangan sa proyekto—dili kana lisod. Apan kumusta man ang mga gilakip nga librarya (mga pakete sa NuGet)? Kon atong tan-awon pa, atong makita nga ang mga gilakip nga librarya gihubit sa mga elemento. Apan ania ang problema - kini nga elemento dili modumala sa mga kondisyon sa husto, sama sa elemento Grupo sa PropyedadMahimo pa gani kini nga usa ka Visual Studio glitch, apan kung imong ipiho ang daghang mga elemento Grupo sa Butang nga adunay mga kondisyon sa pag-configure, ug pagsal-ot og lain-laing mga link sa mga pakete sa NuGet sa sulod, unya kung usbon ang pag-configure, ang tanan nga gipiho nga mga pakete konektado sa proyekto.
Ang elemento motabang kanato , nga molihok sumala sa lohika nga atong naandan kon-unya-kon-dili.
Paggamit sa elemento Pagpili, among gipiho ang lain-laing mga pakete sa NuGet para sa lain-laing mga konfigurasyon:
Tanang sulod sa 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>Palihug timan-i nga sa usa sa mga kondisyon akong gitino ang duha ka mga configuration pinaagi sa ONiining paagiha ang gikinahanglan nga pakete makonektar atol sa pag-configure. Debug.
Ug karon hapit na perpekto ang tanan. Gi-load namo pagbalik ang proyekto, gi-enable ang configuration nga among gikinahanglan, ug gipili ang "Ibalik ang tanang mga pakete sa NuGet"ug atong makita kon giunsa pagbag-o ang atong mga pakete.

Ug niining yugtoa nakaabot ko sa usa ka dead end - aron makolekta ang tanan nga mga configuration sa usa ka higayon, magamit nato ang batch build (menu "Assembly»->«Pag-assemble sa batch"), apan kon mag-ilis og mga configuration, ang mga package dili awtomatikong mobalik. Ug dili usab kini mahitabo kon mag-build sa proyekto, bisan kon angay unta. Wala pa gihapon koy nakitang solusyon niini nga problema gamit ang standard nga mga himan. Lagmit kini usa ka bug sa Visual Studio.
Busa, nakahukom nga gamiton ang usa ka espesyal nga automated assembly system alang sa batch assembly. Dili gyud unta nako gusto buhaton kini, kay para nako dili kini kinahanglanon para sa paghimo og plugin, apan sa pagkakaron wala pa koy nakitang laing solusyon. Mahitungod sa pangutana nga, "Ngano Nuke?" ang tubag yano ra: gigamit nato kini sa trabaho.
Mao nga, moadto kita sa folder sa atong solusyon (dili ang proyekto), pugngi ang yawe pagbalhin ug pag-right-click sa usa ka walay sulod nga luna sa folder - sa menu sa konteksto, pilia ang butang nga "Ablihi ang usa ka bintana sa PowerShell dinhi".

Kung wala nimo kini gi-install nuke, unya isulat una ang sugo
dotnet tool install Nuke.GlobalTool –globalKaron isulat ang mando nuke ug hangyoon ka nga i-configure nuke para sa kasamtangang proyekto. Wala ko kabalo unsaon pagsulat niini sa saktong paagi sa Russian—sa English moingon kini nga "Could not find .nuke file." Gusto ka bang mag-setup og build? [y/n]
Pindota ang Y key ug ang mga setting magpadayon direkta. Kinahanglan nato ang pinakasimple nga opsyon gamit ang MSBuild, mao nga motubag kita sama sa naa sa screenshot:

Mobalhin ta sa Visual Studio, nga moaghat nato sa pag-reload sa solusyon, kay adunay bag-ong proyekto nga nadugang niini. Atong i-reload ang solusyon ug makita nga naa na tay bag-ong proyekto. pagtukod diin usa ra ka file ang among interesado - Build.cs

Ablihi kini nga file ug pagsulat og script aron matukod ang proyekto para sa tanang configuration. Mahimo usab nimo gamiton ang akong script, nga mahimo nimong i-edit aron mohaom sa imong mga panginahanglan:
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"));
}
});
}Balik sa PowerShell window ug i-type pag-usab ang command. nuke (mahimo kang magsulat og sugo nuke nga nagpakita sa gikinahanglan nga targetApan naa tay usa. target, nga modagan pinaagi sa default). Human sa pagpindot sa Enter, mobati kita nga sama sa tinuod nga mga hacker, kay sama sa mga salida, ang atong proyekto awtomatikong ma-build alang sa lain-laing mga configuration.
Ug lain pa, mahimo nimong gamiton ang PowerShell direkta gikan sa Visual Studio (menu "panglantaw»->«Ubang mga bintana»->«Konsol sa Manedyer sa Pakete"), apan ang tanan itom ug puti, nga dili kaayo kombenyente.
Mao na kana ang katapusan sa akong artikulo. Sigurado ko nga mahibal-an nimo mismo ang bersyon sa AutoCAD. Nanghinaut ko nga ang materyal nga gipresentar dinhi makakaplag sa iyang "mga kustomer."
Спасибо за внимание!
Source: www.habr.com
