gpt4 book ai didi

visual-studio - 如何将文件添加到解决方案文件夹?

转载 作者:行者123 更新时间:2023-12-02 22:20:22 25 4
gpt4 key购买 nike

我正在使用以下脚本回答 here使用 Powershell 脚本在解决方案中创建解决方案文件夹。

Function AddFolderToSolution($folderName, $solutionFile)
{
$solutionFolderGuid = "{2150E333-8FDC-42A3-9474-1A3956D46DE8}"
$content = [System.IO.File]::ReadLines($solutionFile)
$lines = New-Object System.Collections.Generic.List[string]
$lines.AddRange($content)
$index = $lines.IndexOf("Global")
$guid = [System.Guid]::NewGuid().ToString().ToUpper()
$txt = "Project(`"$solutionFolderGuid`") = `"$folderName`", `"$folderName`", `"$guid`""
$lines.Insert($index, $txt)
$lines.Insert($index+1, "EndProject")
[System.IO.File]::WriteAllLines($solutionFile, $lines)
}

AddFolderToSolution "NewFolder10" "D:\Solution1.sln"

现在我想将几个文件复制到解决方案文件夹(NewFolder10)中。我如何使用 PowerShell 做到这一点?

最佳答案

解决方案文件夹不是物理文件夹,您要放入解决方案文件夹的文件应该存在于某处,您只需将这些文件的引用添加到您的解决方案文件中。

这些解决方案项应该作为 ProjectSection(SolutionItems) = preProject 的子项添加在解决方案文件中,具有这种格式 relative path to file = relative path to file .

例如,我假设您要添加一个名为 SolutionItems 的解决方案文件夹。并将 file1.txt 和 file2.txt 放入该解决方案文件夹。然后,如果这些文件存在于物理文件夹中,例如 SomeFolder在您的解决方案文件旁边,那么您应该将此文本添加到解决方案文件中:

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "B73A0302-952E-42D6-925D-ABCB95684477"
ProjectSection(SolutionItems) = preProject
..\SomeFolder\file1.txt = ..\SomeFolder\file1.txt
..\SomeFolder\file2.txt = ..\SomeFolder\file2.txt
EndProjectSection
EndProject

示例

这是一种将文件从目录复制到名为 SolutionItems 的文件夹的方法。解决方案附近的文件夹。然后添加一个名为 SolutionItems 的解决方案文件夹(与物理文件夹相同的名称只是为了清楚)并将这些复制的文件添加为解决方案项:
Function AddFolderToSolution($folderPath, $solutionFile)
{
$solutionPath = Split-Path -Parent -Path $solutionFile
$folderName = "SolutionItems"
$destination = Join-Path $solutionPath $folderName
$solutionFolderGuid = "{2150E333-8FDC-42A3-9474-1A3956D46DE8}"
$content = [System.IO.File]::ReadLines($solutionFile)
$lines = New-Object System.Collections.Generic.List[string]
$lines.AddRange($content)
$index = $lines.IndexOf("Global")
$guid = [System.Guid]::NewGuid().ToString().ToUpper()
$range = New-Object System.Collections.Generic.List[string]
$range.Add(
"Project(`"$solutionFolderGuid`") = `"$folderName`", `"$folderName`", `"$guid`"")
$range.Add("`tProjectSection(SolutionItems) = preProject")
New-Item -Path $destination -ItemType Directory -Force
Get-ChildItem -Path $folderPath -File | Copy-Item -Destination $destination -Force
Get-ChildItem -Path $destination -File| ForEach-Object {
$itemName = Split-Path -Leaf -Path $_.FullName
$range.Add("`t`t..\$folderName\$itemName = ..\$folderName\$itemName")
}
$range.Add("`tEndProjectSection")
$range.Add("EndProject")
$lines.InsertRange($index, $range)
[System.IO.File]::WriteAllLines($solutionFile, $lines)
}

这是用法:
AddFolderToSolution "d:\somefolder" "d:\mysolution\Solution1.sln"

通过运行上面的例子,它将从 d:\somefolder 复制文件到名为 SolutionItems 的文件夹靠近解决方案文件。然后添加一个同名的解决方案文件夹 SolutionItems并将这些文件添加为解决方案项。

关于visual-studio - 如何将文件添加到解决方案文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47637228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com