gpt4 book ai didi

powershell - Nuget Powershell : how to add native dependencies? 如何将文件添加到文件夹内的项目?

转载 作者:行者123 更新时间:2023-12-04 11:28:29 25 4
gpt4 key购买 nike

我正在创建一个具有 native 依赖项的 Nuget 包。我通过指定附加 file 将它们毫无问题地放入包中.nuspec 中的条目文件。

但是,我还想将这些复制到将要使用我的包的项目的输出文件夹中,以便可以在运行时找到依赖项。

我的想法是将 native 依赖项添加到项目中并设置它们的 BuildActionCopyToOutputDirectory .我还使用下面的 PowerShell 脚本进行了管理:

param($installPath, $toolsPath, $package, $project)

Function add_file($file)
{
$do_add = 1
foreach($item in $project.DTE.ActiveSolutionProjects[0].ProjectItems)
{
if ($item -eq $file)
{ $do_add = 0 }
}
if ($do_add -eq 1)
{
$added = $project.DTE.ItemOperations.AddExistingItem($file)
$added.Properties.Item("CopyToOutputDirectory").Value = 2
$added.Properties.Item("BuildAction").Value = 0
}
}
add_file(<dependency1>)
add_file(<dependency2>)
...
add_file(<dependencyN>)

到现在为止还挺好。

但是,现在我的项目完全被这些依赖项污染了。

有没有办法使用 PowerShell 将文件添加到项目并将它们放在文件夹中?
或者是否有另一种方法来实现我想要的:将 native 依赖项添加到 NuGet 包并使用我的 Nu-package 将它们输出到项目的 bin 文件夹?

最佳答案

SqlServerCompact 包做了类似的事情,在 post build 事件中将相关的 dll 复制到 bin 文件夹。这里的相关代码:

文件:install.ps1

param($installPath, $toolsPath, $package, $project)

. (Join-Path $toolsPath "GetSqlCEPostBuildCmd.ps1")

# Get the current Post Build Event cmd
$currentPostBuildCmd = $project.Properties.Item("PostBuildEvent").Value

# Append our post build command if it's not already there
if (!$currentPostBuildCmd.Contains($SqlCEPostBuildCmd)) {
$project.Properties.Item("PostBuildEvent").Value += $SqlCEPostBuildCmd
}

文件:GetSqlCEPostBuildCmd.ps1
$solutionDir = [System.IO.Path]::GetDirectoryName($dte.Solution.FullName) + "\"
$path = $installPath.Replace($solutionDir, "`$(SolutionDir)")

$NativeAssembliesDir = Join-Path $path "NativeBinaries"
$x86 = $(Join-Path $NativeAssembliesDir "x86\*.*")
$x64 = $(Join-Path $NativeAssembliesDir "amd64\*.*")

$SqlCEPostBuildCmd = "
if not exist `"`$(TargetDir)x86`" md `"`$(TargetDir)x86`"
xcopy /s /y `"$x86`" `"`$(TargetDir)x86`"
if not exist `"`$(TargetDir)amd64`" md `"`$(TargetDir)amd64`"
xcopy /s /y `"$x64`" `"`$(TargetDir)amd64`""

关于powershell - Nuget Powershell : how to add native dependencies? 如何将文件添加到文件夹内的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842528/

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