是否可以在app.config中的“supportedRuntime”中指定.NET Service Pack?

时间:2010-11-09 15:23:08

标签: c# .net

我有一个在.Net 2.0 SP2上运行良好的应用程序,但无法在.NET 2.0 RTM上正常运行。 (仅供参考:当调用一个托管DLL作为USB编程的本机DLL的包装器时,它失败了。)

我知道您可以在C#.NET应用程序的app.config中提供支持的运行时

  <startup>
    <supportedRuntime version="v2.0.5727" />
    <supportedRuntime version="v4.0" />
  </startup>

但是,是否也可以指定特定的Service Pack版本?

谢谢!

编辑:我现在确定哪个方法在2.0和2.0 SP2之间失败。它是在2.0 SP1中添加的WaitHandle.WaitOne(int)。

对于遇到问题的其他人的提示,编译器没有说什么,但如果您在有问题的运行时使用可执行文件,它确实会给您一个确切的错误。

E.g:

Warning: System.MissingMethodException: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'. while resolving 0xa0000e1 - System.Threading.WaitHandle.WaitOne.
11/11/2010 01:54:07 [3620]: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'. while compiling method XXX

罗吉尔

2 个答案:

答案 0 :(得分:1)

可以找到关于为什么这是不可能的here的重要解释。您可以找到SO响应here来满足您的需求。

<supportedRuntime>实际上并不是这样,因为3.5框架使用2.0运行时。您只能以这种方式指定运行时,而不是 frameworks ,并且元素仅表示首选项,而不是需求。

答案 1 :(得分:0)

试试这个(对于.net 2.0 sp2):

<supportedRuntime version="2.0.50727.1433" />

.NET Framework versions here.