programing

NuGet 패키지에 솔루션 수준 항목 추가

muds 2023. 9. 13. 23:58
반응형

NuGet 패키지에 솔루션 수준 항목 추가

NuGet 패키지를 통해 솔루션 폴더 및 솔루션 항목(프로젝트 아님)을 솔루션 파일에 추가하고자 합니다.파워셸을 통해 이뤄지리라 생각합니다.NuGet, Powershell 및 EnvDTE에 대한 설명서를 살펴보았지만 다음 사항을 파악할 수 없습니다.

  1. 어떤 명령/방법을 사용해야 합니까?
  2. Init.ps1, Install.ps1 또는 다른 곳에서 이 작업을 수행할 표준 스크립트는 무엇입니까?

다음은 PowerShell 스크립트로, 이 스크립트에서 Parent라는 솔루션 폴더와 Child라는 다른 솔루션 폴더를 생성합니다.또한 하위 솔루션 폴더 안에 프로젝트 파일(MyProject.csproj)을 추가합니다.

# Get the open solution.
$solution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])

# Create the parent solution folder.
$parentProject = $solution.AddSolutionFolder("Parent")

# Create a child solution folder.
$parentSolutionFolder = Get-Interface $parentProject.Object ([EnvDTE80.SolutionFolder])
$childProject = $parentSolutionFolder.AddSolutionFolder("Child")

# Add a file to the child solution folder.
$childSolutionFolder = Get-Interface $childProject.Object ([EnvDTE80.SolutionFolder])
$fileName = "D:\projects\MyProject\MyProject.csproj"
$projectFile = $childSolutionFolder.AddFromFile($fileName)

여기서 사용되는 두 가지 주요 비주얼 스튜디오 인터페이스는 Solution2와 SolutionFolder입니다.또한 NuGet에서 제공하는 Get-Interface 기능을 사용합니다.

install.ps1은 프로젝트 기반 패키지에 대해서만 호출되므로 솔루션 전용 패키지의 경우 스크립트를 init.ps1에 배치해야 합니다.Init.ps1은 패키지를 처음 설치할 때와 Visual Studio에서 솔루션을 다시 열 때마다 솔루션에 대해 한 번 실행됩니다.

솔루션 폴더에 임의 파일(프로젝트가 아닌 파일)을 추가하려면 다음과 유사한 작업을 수행해야 합니다.

$vsSolution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
$vsProject = $vsSolution.AddSolutionFolder("newFolder")
$projectItems = Get-Interface $vsProject.ProjectItems ([EnvDTE.ProjectItems])
$projectItems.AddFromFile("pathToFileToAdd.txt")

이 PowerShell 스크립트에는 파일 맨 위에 있는 표준 매개 변수 선언이 없습니다.

param($installPath, $toolsPath, $package, $project)

또한 솔루션 폴더와 폴더 항목이 이미 존재하는지 확인하는 것도 누락되어 있습니다.그것은 연습문제로 남겨 두겠습니다.

언급URL : https://stackoverflow.com/questions/6460854/adding-solution-level-items-in-a-nuget-package

반응형