问题描述
我在 nuget 包的 init.ps1 中遇到 ps 脚本问题.我试图在安装包时创建一个解决方案文件夹,然后将 dlls/pdbs 复制到该文件夹(并删除项目中包安装的源 dll/pdbs).我能够创建解决方案文件夹,但无法将文件从 \content\temp 目录复制到解决方案文件夹.事实上,我真的希望文件系统上的真实文件夹和解决方案文件夹匹配,因此副本应将文件复制到真实文件系统文件夹,然后添加到解决方案文件夹中.
复制部分不起作用,我没有收到任何输出错误.有点失落.
I am having trouble with ps script in init.ps1 of nuget package. I am trying to create a solution folder upon install of the package AND then copy dlls/pdbs to this folder (and delete the source dll/pdbs installed by the package in the project).I am able to create the solution folder, but am having trouble copying the files from the \content\temp directory to the solution folder.In fact, i really want a real folder on the filesystem and a solution folder to match, so the copy should copy the files to the real file system folder and then be added to the solution folder.
The copy portion is not working and I am not getting any output errors. Bit lost.
param($installPath, $toolsPath, $package, $project)
# Get the open solution.
$solution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
# Create the parent solution folder.
$parentProject = $solution.AddSolutionFolder("MyDlls")
# Create a child solution folder.
$parentSolutionFolder = Get-Interface $parentProject.Object ([EnvDTE80.SolutionFolder])
$fileName = (Join-Path $installPath "\temp\mydll")
$projectFile = $parentSolutionFolder.AddFromFile($fileName)
Write-Host ""
Write-Host $sourcePath
Write-Host $parentSolutionFolder
推荐答案
我遇到了同样的问题,并在 BuildDeploySupport 项目中找到了一个 PowerShell 脚本,它正是这样做的.您需要做的就是在多个位置更新您要复制到的文件夹的名称(下面链接的 ps1 中的 Deploy\Support).
I had the same issue and found a PowerShell script in the BuildDeploySupport project that did exactly this. All you need to do is update the name of the folder you'd like to copy in (Deploy\Support in the ps1 linked below) in several places.
参见 BuildDeploySupport 解决方案文件夹复制 Init.ps1
来自链接(截至 2017 年 11 月 30 日):
From link (as of 30/11/2017):
param($installPath, $toolsPath, $package)
# find out where to put the files, we're going to create a deploy directory
# at the same level as the solution.
$rootDir = (Get-Item $installPath).parent.parent.fullname
$deployTarget = "$rootDir\Deploy\Support\"
# create our deploy support directory if it doesn't exist yet
$deploySource = join-path $installPath 'tools/deploy'
if (!(test-path $deployTarget)) {
mkdir $deployTarget
}
# copy everything in there
Copy-Item "$deploySource/*" $deployTarget -Recurse -Force
# get the active solution
$solution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
# create a deploy solution folder if it doesn't exist
$deployFolder = $solution.Projects | where-object { $_.ProjectName -eq "Deploy" } | select -first 1
if(!$deployFolder) {
$deployFolder = $solution.AddSolutionFolder("Deploy")
}
# add all our support deploy scripts to our Support solution folder
$folderItems = Get-Interface $deployFolder.ProjectItems ([EnvDTE.ProjectItems])
ls $deployTarget | foreach-object {
$folderItems.AddFromFile($_.FullName) > $null
} > $null
这篇关于使用 init.ps1 和 nuget 将文件复制到解决方案文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!