我在VSCode中编写PowerShell。我有一个包含类的模块,然后我在一个在顶部使用的脚本中使用该类。
#Requires -Version 5
using module VrVsts
Set-StrictMode -Version latest
class VegaConfig
{
[PSObject] $Project
[PSObject] $User
VegaConfig() {
. "$PSScriptRoot\Get-UserPreferences.ps1"
$this.project = [PSCustomObject](Get-Content "$PSScriptRoot\ProjectConfig.json" | ConvertFrom-Json)
$this.user = Get-UserPreferences -RegistrySubfolder $this.project.UserPreferencesRegistryPath
}
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("TypeNotFound", "", Target='VstsConnection', Justification='Parser Not good enough to detect this')]
#** Warnings are here
[VstsConnection] VstsConnection() {
return ([VstsConnection]::New($this.project.VstsUrl, $this.user.Credential))
}
}
它工作正常,但警告很烦人,因为它使我的文件变红,并可能隐藏文件的其他合法问题。警告是:
[PowerShell]无法找到类型[VstsConnection] [PSScriptAnalyzer]忽略'VstsConnection'类型的'TypeNotFound'解析错误。检查指定的类型是否正确。这也可能是由于'using'语句导入的类型导致在解析时不知道的类型
关于如何压制这个的任何想法?我尝试使用SuppressMessageAttribute,但这似乎没有做任何事情。我知道这适用于特定的PSScriptAnalyzer案例,但实际上并没有删除PowerShell消息或PSScriptAnalyzer警告。
尝试在脚本本身的开头添加类型。
Add-Type -Path 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.Build.Workflow.dll'
我也遇到过这个问题,无论我把SuppressMessage放在哪里都无法摆脱那条消息。我认为这是一个错误,因为我已经导入了包含类的模块但是代码抱怨它无法找到类型。