所以有时候(通常是!)你想要定位一个特定的.NET版本(比如3.0),但是由于某些.NET服务包你会遇到如下问题:
Dispatcher.BeginInvoke(Delegate, Object[])
< - 这是在3.0 SP2(3.0.30618)System.Threading.WaitHandle.WaitOne(Int32)
< - 这是在3.5 SP1,3.0 SP2,2.0 SP2中添加的现在,这些都是由JIT编译器检测到的,因此在Visual Studio中针对.NET 3.0进行构建将无法保证它将仅在.NET 3.0上运行。
缺少
避免使用扩展程序的最佳方法是什么?
谢谢!
答案 0 :(得分:5)
Microsoft倾向于假设,如果您安装了.NET XXX,那么您必须使用最新的Service Pack,因为Windows Update会将它们作为关键更新推送给您。我知道这是一个脆弱的假设,有时会崩溃,但这就是应该发生的事情。
我们的产品目前以.NET 3.5 SP1为目标,因此我们会惊讶地发现仍在运行.NET 3.5 RTM的目标环境。
答案 1 :(得分:4)
此功能内置于Visual Studio自VS 2008 SP1开始,也可在FxCop 1.36中使用。有关详细信息,请查看David Kean's blog post。
答案 2 :(得分:2)
有一种告诉Windows .Net版本使用的方法。这就像使用xmllike:
在Windows \ system32中创建一个名为dllhost.exe.config的文件<? xml version = "1.0" ?>
<configuration>
<startup>
<SupportedRuntime version = XXXXXX>
</startup>
</configuration>
答案 3 :(得分:1)
在发送版本之前,使用适当版本的Visual Studio编译应用程序,该版本对应于目标用户库的最小公分母。
只需准备一个虚拟机,即Visual Studio 2005没有SP,并在部署之前从那里编译解决方案。
答案 4 :(得分:0)