如何禁止[PowerShell]无法找到类型[typename]消息

问题描述 投票:1回答:2

我在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警告。

powershell visual-studio-code
2个回答
0
投票

尝试在脚本本身的开头添加类型。

Add-Type -Path 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.Build.Workflow.dll'

0
投票

我也遇到过这个问题,无论我把SuppressMessage放在哪里都无法摆脱那条消息。我认为这是一个错误,因为我已经导入了包含类的模块但是代码抱怨它无法找到类型。

© www.soinside.com 2019 - 2024. All rights reserved.