Đây là tập lệnh PowerShell sẽ tạo thư mục giải pháp có tên là Parent và thư mục giải pháp khác có tên Child bên trong thư mục đó. Nó cũng thêm một tệp dự án (MyProject.csproj) vào thư mục Child solution.
# 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)
Hai giao diện Visual Studio chính đang được sử dụng ở đây là Solution2 và SolutionFolder. Nó cũng sử dụng chức năng Get-Interface được cung cấp bởi NuGet.
Đối với gói giải pháp chỉ bạn nên đặt tập lệnh của mình bằng init.ps1 vì install.ps1 chỉ được gọi cho gói dựa trên dự án. Init.ps1 chạy một lần cho một giải pháp khi gói được cài đặt lần đầu tiên và mỗi khi giải pháp được mở lại trong Visual Studio.
Để thêm tập tin tùy ý (file phi dự án) vào một thư mục giải pháp bạn sẽ cần phải làm một cái gì đó tương tự như sau:
$vsSolution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
$vsProject = $vsSolution.AddSolutionFolder("newFolder")
$projectItems = Get-Interface $vsProject.ProjectItems ([EnvDTE.ProjectItems])
$projectItems.AddFromFile("pathToFileToAdd.txt")
gì là mất tích từ kịch bản PowerShell đây là khai báo thông số tiêu chuẩn tại đầu tệp.
param($installPath, $toolsPath, $package, $project)
Điều còn thiếu là kiểm tra xem thư mục và thư mục giải pháp đã tồn tại chưa. Tôi sẽ để nó như một bài tập để bạn làm.
Nguồn
2011-06-25 15:49:36
Cảm ơn bạn, đây chính xác là những gì tôi đang tìm kiếm. – brainiac10
là có cách nào để gỡ lỗi init script? – smnbss
Bạn có thể thử set-psdebug trong bảng điều khiển NuGet Package Manager. Tôi chỉ cố gắng chạy các lệnh trong cửa sổ giao diện điều khiển đối với một dự án đang hoạt động. Cách khác là viết đầu ra vào cửa sổ giao diện điều khiển. –