gpt4 book ai didi

powershell - 如何将 add-type 与 -path 和 -language csharpversion3 一起使用?

转载 作者:行者123 更新时间:2023-12-01 23:08:51 25 4
gpt4 key购买 nike

我一直在 Powershell 中使用 add-type 来动态编译一些我想使用的 C# 类。效果很好,只是它只有 2.0。

我刚刚发现了 -language csharpversion3 选项,但它不适用于 -path。我该如何解决这个问题?

[编辑:删除了关于 ReadAllText 的部分 - 我弄错了。]

最佳答案

解决方法如下:将文件作为文本读取。

$script = [io.file]::readalltext($scriptpath)
add-type $script -lang csharpversion3

我不妨粘贴其余部分并以某种方式使这个答案有用。我有一个调试标志,可以让我生成 DLL,这样我就可以更轻松地使用调试器,用反射器检查它等等。

$cp = new-object codedom.compiler.compilerparameters
$cp.ReferencedAssemblies.Add('system.dll') > $null
$cp.ReferencedAssemblies.Add('system.core.dll') > $null

# optionally turn on debugging support
if ($debugscript)
{
# delete old unused crap while we're at it
dir "$($env:temp)\-*.dll" |%{
del $_ -ea silentlycontinue
if ($?) { del $_.fullname.replace('.dll', '.pdb') -ea silentlycontinue }
}

$cp.TreatWarningsAsErrors = $true
$cp.IncludeDebugInformation = $true
$cp.OutputAssembly = $env:temp + '\-' + [diagnostics.process]::getcurrentprocess().id + '.dll'
}

$script = [io.file]::readalltext($scriptpath)
add-type $script -lang csharpversion3 -compilerparam $cp

如果 $debugscript 设置为 true,这会增加一些额外的功能:

  • 编译时将警告视为错误
  • 生成 PDB
  • 使用与进程 ID 相关联的特定 DLL/PDB 名称(在临时文件夹中),以便每个 session 都有自己的名称。这有利于迭代对 .cs 的更改。
  • 删除旧的 dll 和 pdb,在迭代时也很好。

关于powershell - 如何将 add-type 与 -path 和 -language csharpversion3 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475122/

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