The easy way to run Powershell 2.0 using .NET Framework 4.0
来源:互联网 发布:空中英语教室 知乎 编辑:程序博客网 时间:2024/06/06 03:21
http://viziblr.com/news/2012/5/16/the-easy-way-to-run-powershell-20-using-net-framework-40.html
If you've been exploring creating your own modules and cmdlets with Visual Studio, you've likely stumbled onto the following problem: you are unable to load your module using the import-module command because of an error stating that “This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.”
The reason is simple enough. When PowerShell 2.0 starts it is using the old .NET Framework's CLR (which begins which is version 2.) so it will be able to load it modules compiled against .Net Framework 3.5 (which continues to use the version 2 CLR) but not .Net Framework 4.0 (which uses the version 3.0 CLR). This is perhaps a little surprising because Windows 7 comes with .NET Framework 4.0 installed.
You can see exactly what versions Powershell is using by examining the value of $PSVersionTable
Notice the value or CLRVersion begins with a "2".
In any case, this is a common occurrence with a straightforward solution. You can force PowerShell and PowerShell ISE to start using the .NET Framework 4.0 as documented in this StackOverflow question. The procedure involves creating two small XML files and placing them in the appropriate place.
Being lazy, of course, we hate manual steps, so here is a small PowerShell script that will automatically create and place the necessary files. Be aware that the script as shown below will overwrite existing .config files.
$config_text = @"
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
"@$config_text| Out-File $pshome\powershell.exe.config
$config_text| Out-File $pshome\powershell_ise.exe.config
Start PowerShell as an Administrator an then run the script.
Now restart PowerShell and examine the value of $PSVersionTable.
Notice the value or CLRVersion now begins with a "4".
And now your .NET 4.0 module will load correctly.
- The easy way to run Powershell 2.0 using .NET Framework 4.0
- Easy way to install the bluetooth(BCM2045A)
- The way of using SqlCacheDependency in .net 2.0
- Using PowerShell to check the stock information
- An easy way to update (patch) Linux kernel using yum
- .Net Framework Initialization Error – Unable to find a version of the runtime to run this
- .Net Framework Initialization Error – Unable to find a version of the runtime to run
- windbg the easy way
- windbg the easy way
- windbg the easy way
- The Easy Way to Extract Useful Text from Arbitrary HTML
- Porting Over iPad game to iphone the easy way cocos2d
- Porting Over iPad game to iphone the easy way cocos2d
- A easy way to save the filelist in linux
- The Easy Way to Setup PostgreSQL 10 Logical Replication
- The Best Way to Learn ASP.NET
- using powershell to check the hard disk information
- Benefits of Using the .NET Framework
- 重装系统后恢复wubi安装Ubuntu
- chapter 2.5: 内核模式编程基础
- 弹出div浮动登陆框 背景变灰
- 黑马程序员—学习小心知识整理
- ecryptfs 不支持cache=none
- The easy way to run Powershell 2.0 using .NET Framework 4.0
- 飞凌OK6410之异常模式的学习
- android 关机 流程分析
- STL六大组件
- Cocos2d-x CocosBuilder使用教程(二)连接自定义类
- Historically Highest Index algorithm HH-index算法
- core文件调试
- java的设计模式
- 【PB】数据窗口技术