我有以下代码:
using namespace System.Xml.Linq
using assembly System.Xml.Linq
class error {
<#
.PARAMETER type
The type of the error.
#>
[string] $type
<#
.PARAMETER message
The error message.
#>
[string] $message
error() {}
[XElement] ToXElement() {
$el = New-Object XElement([XName] "error")
$attrType = New-Object XAttribute([XName] "type"), $this.type
$el.Add($attrType)
$elDesc = New-Object XElement([XName] "desc"), $this.message
$el.Add($elDesc)
return $el
}
}
当我尝试使用using module error.psm1
导入模块时,PowerShell控制台会说Unable to find type [XElement]
和[XName]
。我已经尝试了绝对和相对的类名,但仍无济于事。
在运行使用模块的脚本之前,有没有办法using
模块而不必运行Add-Type
?
环境$PSVersionTable
:
PS D:\ DiscoveryRunner&gt; $ PSVersionTable
Name Value
---- -----
PSVersion 5.1.14409.1012
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1012
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
注意:我发现的一种解决方法是在PowerShell配置文件(see this docs for more information)中添加Add-Type
语句,但它是一个难看的修复程序,如果可能的话我想避免使用。