Powershell v5.1 似乎使用 .Net Framework v4.0
[Environment]::Version
# Major Minor Build Revision
# ----- ----- ----- --------
# 4 0 30319 42000
Run Code Online (Sandbox Code Playgroud)
和DateTimeOffset.FromUnixTimeSeconds方法需要 .Net Framework v4.6+ ,所以基本上 Powershell v5.1 不应该访问它。但 ...
[DateTimeOffset]|Get-Member -Static -Name FromUnixTimeSeconds
# TypeName: System.DateTimeOffset
# Name MemberType Definition
# ---- ---------- ----------
# FromUnixTimeSeconds Method static System.DateTimeOffset FromUnixTimeSeconds(long seconds)
Run Code Online (Sandbox Code Playgroud)
为什么我可以调用它?它与 C# AssemblyVersion 和 AssemblyFileVersion 有关系吗?
[Environment]::Version报告CLR(运行时)版本,该版本与.NET Framework版本不同,后者是基于给定 CLR 版本构建的独立版本化类库[1]。
要获取框架版本,请使用以下命令,它返回一个字符串,例如
".NET Framework 4.8.4341.0":
[System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription
Run Code Online (Sandbox Code Playgroud)
笔记:
此属性在 .NET Framework 4.7.1 及更高版本中可用。
2.0 测试版可能会影响该属性。如果是这样,请升级到最新的稳定版本,即撰写本文时;详情见评论。PSReadLineModule[System.Runtime.InteropServices.RuntimeInformation]2.1如果它不可用,您可以尝试以下操作,它会产生一个字符串,例如"4.8.04084":[2]
Get-ItemPropertyValue 'registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' Version
Run Code Online (Sandbox Code Playgroud)
如果这也不起作用,则暗示您的 .NET Framework 版本低于4.5
[1] 在跨平台的 .NET Core / .NET 5+ 版本中,只有一个统一的运行时还包含类库,这[Environment]::Version在 .NET Core 3.0 及更高版本中正确反映。
[2] 奇怪的是,这个版本的修订号与[System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription(如果有的话)报告的版本号不同。还有另一个版本不同的变体,作为InstallPath来自同一注册表项的值的一部分;例如C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |