๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

CAD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•  ๋•Œ(๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” ์ด๋Š” AutoCAD, Revit ๋ฐ Renga์ž…๋‹ˆ๋‹ค) ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ ๋ฒ„์ „์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ถœ์‹œ๋˜๊ณ  API ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ์ƒˆ ๋ฒ„์ „์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•˜๋‚˜๋งŒ ์žˆ๊ฑฐ๋‚˜ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์•„์ง ๋…ํ•™ํ•œ ์ดˆ๋ณด์ž์ธ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ํ•„์š”ํ•œ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ์ƒˆ ๋ฒ„์ „์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ดํ›„์— ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ธ๊ฑด๋น„๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝํ—˜๊ณผ ์ง€์‹์„ ์–ป์œผ๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ด ๊ธธ์„ ๊ฑธ์–ด์™”๋Š”๋ฐ, ๊ฒฐ๊ตญ ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๊ณ , ์–ผ๋งˆ๋‚˜ ํŽธ๋ฆฌํ•œ์ง€ ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋จผ์ €, ์ œ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•ด ์˜จ ๋ช…๋ฐฑํ•˜๊ณ  ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋งํฌ

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ„๋‹จํ•˜๊ณ  ์‹œ๊ฐ์ ์ด๋ฉฐ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ์˜ ์ถ”์ƒ์ ์ธ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Visual Studio๋ฅผ ์—ด๊ณ (์ €๋Š” Community 2019 ๋ฒ„์ „์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค) ์ƒˆ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ์—๊ฒŒ ์ „ํ™”ํ•˜์ž MySuperPluginForRevit

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” 2015-2020 ๋ฒ„์ „์šฉ Revit์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์†”๋ฃจ์…˜(Net Framework Class Library)์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ˜ธ์ถœํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. MySuperPluginForRevit_2015

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Revit API์— ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋กœ์ปฌ ํŒŒ์ผ์— ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(ํ•„์š”ํ•œ ๋ชจ๋“  SDK ๋˜๋Š” ๋ชจ๋“  ๋ฒ„์ „์˜ Revit์„ ์„ค์น˜ํ•ด์•ผ ํ•จ) ์ฆ‰์‹œ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ NuGet ํŒจํ‚ค์ง€๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ๋งŽ์€ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๋Š” ๋‚ด ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๋ฅผ ์—ฐ๊ฒฐํ•œ ํ›„ 'ํ•ญ๋ชฉ์„ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜์„ธ์š”.์ฐธ์กฐ" ํ•ญ๋ชฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค "packages.config๋ฅผ PackageReference๋กœ ์ด๋™...ยป

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ๊ฐ‘์ž๊ธฐ ๋‹นํ™ฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ํŒจํ‚ค์ง€ ์†์„ฑ ์ฐฝ์— ์ค‘์š”ํ•œ ํ•ญ๋ชฉ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— "๋กœ์ปฌ๋กœ ๋ณต์‚ฌ"๋ผ๋Š” ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆ‡๋œ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹นํ™ฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ ํŽธ๋ฆฌํ•œ ํŽธ์ง‘๊ธฐ์—์„œ .csproj ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์„ ์—ด๊ณ (์ €๋Š” Notepad++๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค) ๊ฑฐ๊ธฐ์—์„œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” ์ง€๊ธˆ ์ด๋ ‡๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค:

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

์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์‹คํ–‰ ์‹œ๊ฐ„. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

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

์ด์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ํŒจํ‚ค์ง€์˜ ํŒŒ์ผ์ด ์ถœ๋ ฅ ํด๋”์— ๋ณต์‚ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋” ๋‚˜์•„๊ฐ€์„œ ์šฐ๋ฆฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๋ฉด์„œ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋œ Revit API์˜ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ฆ‰์‹œ ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค. ๊ธ€์Ž„, ์•„๋‹ˆ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” Revit ๋ฒ„์ „์— ๋”ฐ๋ผ ์ฝ”๋“œ์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฝ”๋“œ ์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์†์„ฑ์„ ์—ด๊ณ  "ํƒญ์œผ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค.์กฐ๋ฆฝ"๊ทธ๋ฆฌ๊ณ  ํ˜„์žฅ์—์„œ"์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ํ‘œ๊ธฐ๋ฒ•"๊ธ€์„ ์“ฐ์ž R2015.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ๋ฐ ๋ฆด๋ฆฌ์Šค ๊ตฌ์„ฑ ๋ชจ๋‘์— ๊ธฐํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๊ฐ€ ์†์„ฑ ์ฐฝ์— ์žˆ๋Š” ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์ฆ‰์‹œ " ํƒญ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.์‹ ์ฒญ"๊ทธ๋ฆฌ๊ณ  ํ˜„์žฅ์—์„œ"๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šคยป ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š” _2015๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ๋ณดํŽธ์ ์ด๊ณ  ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„๊ณผ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚˜์˜ ๊ฒฝ์šฐ ์ตœ์ข… ์ œํ’ˆ์—์„œ๋Š” ๋ชจ๋“  ๋ฒ„์ „์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•˜๋‚˜์˜ ํด๋”์— ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ๋‚ด ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„์—๋Š” ๋‹ค์Œ ํ˜•์‹์˜ ์ ‘๋ฏธ์‚ฌ๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค. _20ั…ั…. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ํด๋”์— ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„์—์„œ ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์ฝ”๋“œ๋กœ ๊ฐ€๋ณด์ž Class1.cs ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ 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;
        }
    }
}

์ €๋Š” 2015 ๋ฒ„์ „ ์ด์ƒ์˜ ๋ชจ๋“  Revit ๋ฒ„์ „(์ž‘์„ฑ ๋‹น์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)์„ ์ฆ‰์‹œ ๊ณ ๋ คํ–ˆ์œผ๋ฉฐ ๋™์ผํ•œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ์˜ ์กด์žฌ๋„ ์ฆ‰์‹œ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํ•˜์ด๋ผ์ดํŠธ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค. ์šฐ๋ฆฌ๋Š” Revit 2016์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „์— ๋Œ€ํ•ด์„œ๋งŒ ์†”๋ฃจ์…˜์— ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๊ฐ๊ฐ ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆซ์ž 2015๋ฅผ ์ˆซ์ž 2016์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. Class1.cs ์ƒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ญ์ œํ•˜์„ธ์š”.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ - Class1.cs โ€“ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ƒˆ ํ”„๋กœ์ ํŠธ์— ๋งํฌ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ธด โ€“ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  "๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.์ถ”๊ฐ€"->"๊ธฐ์กด ์š”์†Œ", ์—ด๋ฆฌ๋Š” ์ฐฝ์—์„œ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ์ฐพ๊ณ  ์˜ต์…˜ ๋Œ€์‹  "์ถ”๊ฐ€"์˜ต์…˜์„ ์„ ํƒํ•˜์„ธ์š”"์—ฐ๊ฒฐ๋กœ ์ถ”๊ฐ€ยป

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  1. ์งง์€ โ€“ ์†”๋ฃจ์…˜ ํƒ์ƒ‰๊ธฐ์—์„œ ์ง์ ‘ ์›ํ•˜๋Š” ํŒŒ์ผ(๋˜๋Š” ํŒŒ์ผ ๋˜๋Š” ์ „์ฒด ํด๋”)์„ ์„ ํƒํ•˜๊ณ  Alt ํ‚ค๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋กœ ๋Œ์–ด๋‹ค ๋†“์Šต๋‹ˆ๋‹ค. ๋“œ๋ž˜๊ทธํ•˜๋ฉด์„œ Alt ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ๋”ํ•˜๊ธฐ ๊ธฐํ˜ธ์—์„œ ํ™”์‚ดํ‘œ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    UPD : ์ด ๋‹จ๋ฝ์—์„œ ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์ „์†กํ•˜๋ ค๋ฉด ๋ˆ„๋ฅด๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Shift + Alt!

์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ๋‘ ๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ์— ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Class1.cs ํ•ด๋‹น ์•„์ด์ฝ˜(ํŒŒ๋ž€์ƒ‰ ํ™”์‚ดํ‘œ):

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํŽธ์ง‘๊ธฐ ์ฐฝ์—์„œ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•  ๋•Œ ์ฝ”๋“œ๋ฅผ ํ‘œ์‹œํ•  ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ ์•„๋ž˜์—์„œ ํŽธ์ง‘ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ๊ตฌ์„ฑํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ(2017-2020)๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ƒํ™œ ํ•ดํ‚น - ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋ฏธ ๋งํฌ๋กœ ์‚ฝ์ž…๋œ ํ”„๋กœ์ ํŠธ์—์„œ ์†”๋ฃจ์…˜ ํƒ์ƒ‰๊ธฐ์˜ ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธํ•˜๋Š” ๊ฒฝ์šฐ Alt ํ‚ค๋ฅผ ๋ˆ„๋ฅผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค!

์„ค๋ช…๋œ ์˜ต์…˜์€ ์ƒˆ ๋ฒ„์ „์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ˆœ๊ฐ„์ด๋‚˜ ํ”„๋กœ์ ํŠธ์— ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ˆœ๊ฐ„๊นŒ์ง€ ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ์ง€๋ฃจํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์— ๊ฐ‘์ž๊ธฐ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊นจ๋‹ฌ์•˜๊ณ  ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„˜์–ด๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ์˜ ๋งˆ๋ฒ•

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ๊ณ  ๋‚˜๋ฉด "๊ธฐ์‚ฌ๊ฐ€ ๊ณง๋ฐ”๋กœ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๊ฒƒ์ธ๋ฐ ์™œ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๊นŒ?!"๋ผ๊ณ  ์™ธ์น  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ ํ”„๋กœ์ ํŠธ์˜ ์ฐจ์ด์ ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํžˆ ๋” ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋จผ์ € ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ(ํŒŒ์ผ์ด ์ง์ ‘ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ์†”๋ฃจ์…˜์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. 2016-2020 ๋ฒ„์ „์šฉ ํ”„๋กœ์ ํŠธ. ์†”๋ฃจ์…˜์ด ์žˆ๋Š” ํด๋”๋ฅผ ์—ด๊ณ  ๊ฑฐ๊ธฐ์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ํด๋”๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”.

์šฐ๋ฆฌ์˜ ๊ฒฐ์ •์—๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. MySuperPluginForRevit_2015. ํ•ด๋‹น ์†์„ฑ์„ ์—ด๊ณ  ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ํƒญ์—์„œ "์‹ ์ฒญ"์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„์—์„œ ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š”. _2015 (์ด์œ ๋Š” ๋‚˜์ค‘์— ๋ฐํ˜€์ง€๊ฒ ์ฃ )
  2. ํƒญ์—์„œ "์กฐ๋ฆฝยป ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. R2015 ํ•ด๋‹น ๋ถ„์•ผ์—์„œ

์ฐธ๊ณ : ์ตœ์‹  ๋ฒ„์ „์˜ Visual Studio์—๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ ์†์„ฑ ์ฐฝ์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฐํ•จ์ด ๋ฐœ์ƒํ•˜๋ฉด .csproj ํŒŒ์ผ์—์„œ ์ˆ˜๋™์œผ๋กœ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ์ž‘์—…ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณ„์† ์ฝ์–ด๋ณด์„ธ์š”.

์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์†”๋ฃจ์…˜ ํƒ์ƒ‰๊ธฐ ์ฐฝ์—์„œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. _2015 ๊ทธ๋Ÿฐ ๋‹ค์Œ ์†”๋ฃจ์…˜์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฒฝ์ฃผ์˜์ž์˜ ์งˆ์„œ์™€ ๊ฐ์ •์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•œ ์ผ์ด์ฃ ! ์†”๋ฃจ์…˜ ํด๋”๋ฅผ ์—ด๊ณ  ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ์ ํŠธ ํด๋”์˜ ์ด๋ฆ„์„ ๋ฐ”๊พผ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์†”๋ฃจ์…˜์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ๊ด€๋ฆฌ์ž๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ๋ฏธ๊ตญ ๊ตฌ์„ฑ ํ•ด์ œ ์›์น™์ ์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ ์ด๋ฆ„์œผ๋กœ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. R2015, R2016,โ€ฆ, R2020. ๋‹ค๋ฅธ ๊ตฌ์„ฑ์—์„œ ์„ค์ •์„ ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ ํŽธ๋ฆฌํ•œ ํŽธ์ง‘๊ธฐ์—์„œ ํ™•์žฅ๋ช…์ด .csproj์ธ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Visual Studio์—์„œ ์—ด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์–ธ๋กœ๋“œํ•ด์•ผ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์ƒํ™ฉ์— ๋งž๋Š” ๋ฉ”๋‰ด์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํŽธ์ง‘๊ธฐ๋Š” ์ •๋ ฌ๊ณผ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋ฏ€๋กœ Visual Studio์—์„œ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ด ๋”์šฑ ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์—์„œ ์šฐ๋ฆฌ๋Š” ์š”์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์†์„ฑ ๊ทธ๋ฃน โ€“ ๋งจ ์œ„์—๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์ด ์žˆ๊ณ  ๊ทธ ๋‹ค์Œ์—๋Š” ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”์†Œ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ ํ”„๋กœ์ ํŠธ์˜ ์†์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด์ด ์—†๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ผ๋ฐ˜ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ณ , ์กฐ๊ฑด์ด ์žˆ๋Š” ์š”์†Œ๋Š” ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์ผ๋ถ€ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๊ณตํ†ต(์ฒซ ๋ฒˆ์งธ) ์š”์†Œ๋กœ ์ด๋™ ์†์„ฑ ๊ทธ๋ฃน ๊ทธ๋ฆฌ๊ณ  ๋ถ€๋™์‚ฐ์„ ์‚ดํŽด๋ณด์„ธ์š” ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„ โ€“ ์ด๊ฒƒ์€ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์ด๋ฆ„์ด๋ฉฐ ์ ‘๋ฏธ์‚ฌ ์—†์ด ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. _2015. ์ ‘๋ฏธ์‚ฌ๊ฐ€ ์žˆ์œผ๋ฉด ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

์กฐ๊ฑด์ด ์žˆ๋Š” ์š”์†Œ ์ฐพ๊ธฐ

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

ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์กฐ๊ฑด์ด ์žˆ๋Š” ์š”์†Œ

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

์ฝ”๋“œ ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น… ๋‹จ๊ณ„์—์„œ ์ž‘์—…ํ•˜๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋งž๊ฒŒ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์†์„ฑ ๊ทธ๋ฃน ์šฐ๋ฆฌ ๊ตฌ์„ฑ์„ ์œ„ํ•ด. ์ด๋Ÿฌํ•œ ์š”์†Œ์—์„œ๋Š” ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ์†์„ฑ๋งŒ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ์ถœ๋ ฅ ๊ฒฝ๋กœ โ€“ ์ถœ๋ ฅ ํด๋”. ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ–ˆ์–ด์š” binR20xx
  • ์ •์˜์ƒ์ˆ˜ โ€“ ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๊ธฐํ˜ธ. ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. TRACE;R20ั…ั…
  • ๋Œ€์ƒํ”„๋ ˆ์ž„์›Œํฌ๋ฒ„์ „ โ€“ ํ”Œ๋žซํผ ๋ฒ„์ „. Revit API ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„ โ€“ ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„(์˜ˆ: ํŒŒ์ผ ์ด๋ฆ„). ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์ •ํ™•ํ•œ ์ด๋ฆ„์„ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์–‘์„ฑ์„ ์œ„ํ•ด ๊ฐ’์„ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. $(์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„)_20ั…ั…. ์ด๋ฅผ ์œ„ํ•ด ์ด์ „์—๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์ด๋ฆ„์—์„œ ์ ‘๋ฏธ์‚ฌ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์š”์†Œ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠน์ง•์€ ์ „ํ˜€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๊ฐ„๋‹จํžˆ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ ๋’ท๋ถ€๋ถ„์—์„œ .csproj ํŒŒ์ผ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ฒจ๋ถ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ข‹์•„์š”, ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ์˜ ์†์„ฑ์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(NuGet ํŒจํ‚ค์ง€)๋กœ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ํฌํ•จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์š”์†Œ์— ์ง€์ •๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ’ˆ๋ชฉ ๊ทธ๋ฃน. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์ด ์š”์†Œ๋Š” ์กฐ๊ฑด์„ ์š”์†Œ๋กœ ์ž˜๋ชป ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ ๊ทธ๋ฃน. ์•„๋งˆ๋„ ์ด๊ฒƒ์€ Visual Studio ๊ฒฐํ•จ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ํ’ˆ๋ชฉ ๊ทธ๋ฃน ๊ตฌ์„ฑ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€์— NuGet ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋งํฌ๋ฅผ ์‚ฝ์ž…ํ•œ ๋‹ค์Œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ง€์ •๋œ ๋ชจ๋“  ํŒจํ‚ค์ง€๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์š”์†Œ๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ๋„์™€์ค๋‹ˆ๋‹ค ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ, ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ๋…ผ๋ฆฌ์— ๋”ฐ๋ผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด.

์š”์†Œ ์‚ฌ์šฉ ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ, ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ NuGet ํŒจํ‚ค์ง€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋‚ด์šฉ 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>

์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜์—์„œ ๋‹ค์Œ์„ ํ†ตํ•ด ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ตฌ์„ฑ ์ค‘์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ.

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ , ํ•„์š”ํ•œ ๊ตฌ์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ , (ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ) ์†”๋ฃจ์…˜์˜ ์ƒํ™ฉ์— ๋งž๋Š” ๋ฉ”๋‰ด์—์„œ " ํ•ญ๋ชฉ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.๋ชจ๋“  NuGet ํŒจํ‚ค์ง€ ๋ณต์›"๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋‹จ๊ณ„์—์„œ ์ €๋Š” ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ตฌ์„ฑ์„ ํ•œ ๋ฒˆ์— ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๊ด„ ์กฐ๋ฆฝ(๋ฉ”๋‰ด "์กฐ๋ฆฝ"->"์ผ๊ด„ ๋นŒ๋“œ"), ๊ทธ๋Ÿฌ๋‚˜ ๊ตฌ์„ฑ์„ ์ „ํ™˜ํ•˜๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ์ž๋™์œผ๋กœ ๋ณต์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์กฐ๋ฆฝํ•  ๋•Œ ์ด๋ก ์ ์œผ๋กœ๋Š” ๊ทธ๋ž˜์•ผ ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ์ผ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ‘œ์ค€ ์ˆ˜๋‹จ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋˜ํ•œ Visual Studio ๋ฒ„๊ทธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ผ๊ด„ ์กฐ๋ฆฝ์„ ์œ„ํ•ด์„œ๋Š” ํŠน์ˆ˜ ์ž๋™ํ™” ์กฐ๋ฆฝ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ต๋ฌด๊ธฐ. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ ์ธก๋ฉด์—์„œ ๊ณผ์ž‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์ด๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  โ€œ์™œ ํ•ต๋ฌด๊ธฐ์ธ๊ฐ€?โ€๋ผ๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๋Œ€๋‹ต์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ง์žฅ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ์†”๋ฃจ์…˜ ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ ํ‚ค๋ฅผ ๊ธธ๊ฒŒ ๋ˆ„๋ฅด์„ธ์š”. ๋ณ€ํ™” ํด๋”์˜ ๋นˆ ๊ณต๊ฐ„์„ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค. ์ƒํ™ฉ์— ๋งž๋Š” ๋ฉ”๋‰ด์—์„œ " ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.์—ฌ๊ธฐ์—์„œ PowerShell ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค.".

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•ต๋ฌด๊ธฐ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋จผ์ € ๋ช…๋ น์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

dotnet tool install Nuke.GlobalTool โ€“global

์ด์ œ ๋ช…๋ น์„ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”. ํ•ต๋ฌด๊ธฐ ๊ตฌ์„ฑํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•ต๋ฌด๊ธฐ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ. ์ด๊ฒƒ์„ ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜์–ด๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. .nuke ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋ฅผ ์„ค์ •ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? [์˜ˆ/์•„๋‹ˆ์š”]

Y ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ง์ ‘ ์„ค์ • ํ•ญ๋ชฉ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. MS๋นŒ๋“œ, ์Šคํฌ๋ฆฐ์ƒท๊ณผ ๊ฐ™์ด ๋Œ€๋‹ตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Visual Studio๋กœ ์ด๋™ํ•˜๋ฉด ์ƒˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฏ€๋กœ ์†”๋ฃจ์…˜์„ ๋‹ค์‹œ ๋กœ๋“œํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์„ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์šฐ๋ฆฌ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ํŒŒ์ผ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Build.cs

๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Revit/AutoCAD์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ํŒŒ์ผ์„ ์—ด๊ณ  ๋ชจ๋“  ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ์•„๋‹ˆ๋ฉด ํ•„์š”์— ๋งž๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

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

PowerShell ์ฐฝ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๋ช…๋ น์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•ต๋ฌด๊ธฐ (๋ช…๋ น์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ํ•ต๋ฌด๊ธฐ ํ•„์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชฉํ‘œ. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์š” ๋ชฉํ‘œ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋จ). Enter ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์‹ค์ œ ํ•ด์ปค๊ฐ€ ๋œ ๋“ฏํ•œ ๋Š๋‚Œ์ด ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ํ™”์ฒ˜๋Ÿผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์— ๋งž๊ฒŒ ๊ตฌ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Visual Studio์—์„œ ์ง์ ‘ PowerShell์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฉ”๋‰ด "์ „๋ง"->"๋‹ค๋ฅธ ์ฐฝ"->"ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†”"), ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์ด ํ‘๋ฐฑ์œผ๋กœ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์œผ๋กœ ๋‚ด ๊ธฐ์‚ฌ๋ฅผ ๋งˆ์นฉ๋‹ˆ๋‹ค. AutoCAD ์˜ต์…˜์„ ์ง์ ‘ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ œ์‹œ๋œ ์ž๋ฃŒ๊ฐ€ "๊ณ ๊ฐ"์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€