相关疑难解决方法(0)

PowerShell 5 和类 - 无法将“X”类型的“X”值转换为“X”类型

我正在尝试使用 PowerShell 的类,这是一种非常方便的将相关数据分组在一起的方法,并且在处理行为方面非常繁琐。简化方案:一个定义类的 PS 脚本和另一个使用该类的脚本。

通用.ps1

class X
{
    [string] $A
} 
Run Code Online (Sandbox Code Playgroud)

脚本1.ps1

. $PSScriptRoot\Common.ps1

[X] $v = New-Object X
Run Code Online (Sandbox Code Playgroud)

一切都很好-你可以运行Script1.ps1没有问题的次任意数量的-直到你做出任何的改变Common.ps1。您将面临以下错误。

无法将“X”类型的“X”值转换为“X”类型。
在 D:\temp\PSIssue\Script1.ps1:3 字符:1
+ [X] $v = 新对象 X
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullQualifiedErrorId:运行时异常

可以想象,PS 文件中的任何更改(即使您只是添加了空格)都会强制其重新编译,因此该类型X变得与以前不同X- 临时容器程序集已更改(同样的问题在 .NET 中很容易重现 - 类型与只要“完全限定的程序集名称”相同)。变化Script1.ps1使事情恢复正常。

有没有办法克服这类问题?

powershell class powershell-5.0

8
推荐指数
1
解决办法
2356
查看次数

标签 统计

class ×1

powershell ×1

powershell-5.0 ×1