UPDATED ANSWER:所以我想我應該已經在我的問題上更具體一些,並聲明我正在尋找在我的Nuget PowerShell安裝文件(install.ps1)中的Visual Studio對象模型的幫助。上面選定的答案明確指出了我的正確方向,並且非常有幫助。
這個答案還有一個額外的好處,即包括一個關於VS「神奇地」知道我在做什麼的VS的迴避評論。下次我將提供關於我對VS項目文件理解的更多細節,以及我實際上在尋找有關如何在VS對象模型中移動文件以避免我得到的錯誤的信息的清晰度。但是我離題了。下面是我想要做的事情以及我用來解決問題的代碼的更好解釋。
在我的Nuget PS腳本中,我安裝了bootstrap,它將CSS文件放置在我項目的Content文件夾中。我想在該文件夾內創建一個lib文件夾,然後將這些引導文件(複製並刪除原件)移動到新的文件夾lib。下面是代碼這樣做:
install.ps1源
#Install Bootstrap
install-package bootstrap -source nuget.org
#Get the CONTENT folder object
contentFolder = $project.ProjectItems | Where-Object { $_.Properties.Item("Filename").Value -eq "Content" }
#Create the LIB folder in the CONTENT directory
$libFolder = (Get-Interface $contentFolder.ProjectItems "EnvDTE.ProjectItems").AddFolder("lib")
#Get the files to be moved
$filesToMove = $contentFolder.ProjectItems | Where-Object { $_.Properties.Item("Filename").Value -like "bootstrap*.*" }
#Copy each bootstrap item to the lib folder then delete the original
foreach($item in $filesToMove) {
Write-Host "Moving " $item.Properties.Item("FullPath").Value
(Get-Interface $libFolder.ProjectItems "EnvDTE.ProjectItems").AddFromFileCopy($item.Properties.Item("FullPath").Value)
(Get-Interface $item "EnvDTE.ProjectItem").Delete()
}
有許多不同的文章中,我除了上述(SQL Server Compact Nuget package source)提到的NuGet源代碼看了一下。但是有一篇博客文章對幫助我理解VS對象模型以及我在install.ps1中做的其他一些事情特別有幫助,它是Setting DependentUpon File Properties on NuGet Package Install。