在 Visual Studio 2019 的 PowerShell 窗口中找不到 ILDASM

Posted

技术标签:

【中文标题】在 Visual Studio 2019 的 PowerShell 窗口中找不到 ILDASM【英文标题】:ILDASM could not be found in the PowerShell window of Visual Studio 2019 【发布时间】:2021-10-27 23:02:24 【问题描述】:

尝试按照教程步骤并反汇编可执行的 c# 文件,但每当我在命令提示符下键入 ildasm 时,它都会显示在开发人员 powershell 中无法识别。当我对 dll 文件执行此操作时也显示相同的消息。请帮忙。

【问题讨论】:

如果直接运行 PowerShell Windows 的开始菜单链接或 powershell.exePowerShell_ISE.exe 会发生什么?您是否更改了环境路径变量?例如,如果您使用路径运行 c:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64\ildasm.exe 会发生什么? @OlivierRogier 直接从 Windows 运行 PowerShell,同样的问题仍然存在。我没有对环境路径变量做任何事情(我应该吗?,如果是,那么如何)。如果我通过给它路径来运行它,它会在 PowerShell 中说同样的问题,但是当我从 cmd 转到目录并运行它时,它会运行。只是想从开发人员的 PowerShell 中运行它,所以它很方便。我很困惑和沮丧。 我刚刚意识到:ildasm.exe 是一个应用程序,而不是一个 powershell 命令...因此您必须从命令行或某个 Process.Start command 等效于 Power Shell 这能回答你的问题吗? PowerShell - Start-Process and Cmdline Switches 和 Using start-process and -wait command in Powershell @OlivierRogier 在使用命令提示符时也说 ildasm 或 ildasm.exe 无法识别(当我从我的 c# exe 和 dll 文件所在的目录调用它时,但我可以调用它执行 ildasm它自己的目录(C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools)。我想从项目目录本身调用它,这样方便(这是我创建一个新的环境变量路径?)。对不起,我是新手,如果我没有得到你想要解释的内容。 【参考方案1】:

错误消息暗示 ildasm.exe 的目录不在$env:PATH 环境变量中存储的目录列表中,因此您不能仅通过 name 调用它。

要通过其 path 从 PowerShell 调用它,还有一个额外的语法要求:通过需要 quoting 的路径调用可执行文件 - 例如在您的情况下,假设路径包含 空格 - 需要通过 &、call operator 调用:

# Add arguments as needed.
& 'C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe'

ildasm.exe 的目录添加到您的$env:PATH 变量,请运行以下命令:

$env:PATH += ';C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools'

仅在当前会话的剩余时间内保持有效

如果您希望它默认在未来的PowerShell 会话中生效,请运行以下一次,然后启动一个新会话。该命令将$env:PATH-extending 命令添加到您的PowerShell profile file、$PROFILE,它会在会话开始时自动加载:

if (-not (Test-Path $PROFILE))  New-Item -Force $PROFILE 
Add-Content $PROFILE -Value '$env:PATH += ";C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools"'

如果您希望更改系统范围内(在以后的会话中)生效,您需要更新持久 PATH 环境变量的定义,存储在注册表中;运行以下一次,然后启动一个新的 PowerShell 会话。

[Environment]::SetEnvironmentVariable(
  'Path',
  (
    [Environment]::GetEnvironmentVariable('Path', 'User') + 
    ';C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools'
  ),
  'User'
)

上面修改了当前用户的持久PATH环境变量。 要修改所有用户的定义,请将'User'的两个实例替换为'Machine',但请注意,您必须随后从提升会话运行命令(运行为管理员)。

【讨论】:

以上是关于在 Visual Studio 2019 的 PowerShell 窗口中找不到 ILDASM的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017工程在Visual Studio 2019打开碰到的问题

visual studio2019过期了怎么办

每次打开visual studio2019都会在桌面生成一个.vs文件夹?

怎样visual studio2019

visual studio 2019能写html和js语言吗?

Visual Studio 2012-2019的130多个jQuery代码片段。