簡體   English   中英

在NuGet PowerShell安裝中的Visual Studio項目中移動文件?

[英]Move file(s) in a Visual Studio project in NuGet PowerShell install?

我有一個nuget powershell(install.ps1),在這里組織“目錄”目錄的內容。 我想將引導文件(bootstrap.css,bootstrap.min.css等)移動到名為“ lib”的新文件夾中,該文件夾位於“目錄”文件夾中。

我嘗試使用有效的RoboCopy,但它是在文件系統上完成的,而不是在項目中完成的

robocopy "C:\WebApplication1\Content" "C:\WebApplication1\Content\lib" bootstrap*.* /MOV

該代碼可用於移動文件,但是該解決方案隨后顯示文件丟失。 如何為Visual Studio項目執行此操作?

您不能簡單地移動文件並期望Visual Studio神奇地知道您所做的事情。 使用記事本打開項目文件,您將看到顯式引用了項目中的所有文件。 為了通過PowerShell進行所需的工作,基本上有兩條路:在XML Studio外部使用XML cmdlet來修飾XML項目文件,或者-更好地使用Visual Studio對象模型來移動文件。

要了解如何執行此操作,最簡單的方法是以已經完成類似操作的Nuget包為例。 SQL Server Compact Nuget軟件包是一個很好的選擇。 下載它,重命名並給它一個.zip擴展名,使用您最喜歡的zip管理器將其打開,然后在tools目錄中查看一個名為VS.psm1的PowerShell模塊。 該模塊允許您在項目中添加/刪除文件。

更新后的答案:所以我想我應該在問題上說得更具體些,並說我正在Nuget PowerShell安裝文件(install.ps1)中尋求有關Visual Studio對象模型的幫助。 上面選擇的答案肯定為我指明了正確的方向,並且非常有幫助。

該答案還具有一個額外的好處,包括“神奇地”知道我要做什么的關於VS的反手,屈尊的評論。 下次,我將提供更多有關我對VS項目文件的理解的詳細信息,並且清楚地表明我實際上是在尋找有關如何在VS對象模型中移動文件的信息,以避免出現錯誤……但是我離題了。 以下是對我正在嘗試做的事情以及用於解決問題的代碼的更好解釋。

在我的Nuget PS腳本中,我正在安裝引導程序,該程序將其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()
}

除了上面提到的Nuget源代碼( SQL Server Compact Nuget包源代碼 )之外,我還查看了許多其他文章。 但是一篇博客文章對幫助我理解VS對象模型以及我在install.ps1中正在做的其他事情特別有用,它是在NuGet軟件包安裝上設置DependentUpon文件屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM