在仅支持.NET 4的系统上运行.NET 3.5应用程序

8

这个问题可能已经被问过很多次,但是我不能让典型的解决方案为我工作。 建议的解决方案 是将其放在“app.config”文件中:

<configuration>
   <startup>
      <supportedRuntime version="v4.0"/>
   </startup>
</configuration>

但是,即使是一个简单的“Hello World”程序,在Windows XP上(通过Windows Virtual PC在Windows 7上)只安装了.NET 4.0运行时之后,我仍然收到错误消息:“无法找到要运行此应用程序的运行时版本。”
背景介绍一下,我使用的是Windows XP,并且在XP上只安装了.NET 4.0运行时。经过一些研究,我找到了这个页面:http://msdn.microsoft.com/en-us/library/ee941656.aspx#core
它提到:“如果您的应用程序配置文件名为应用程序名称.config,请将其重命名为应用程序名称.exe.config。例如,将MyApp.config重命名为MyApp.exe.config。”。
我试过了这个方法,认为它可能可以解决问题,但是当我尝试在带有.NET 4.0的WinXP上运行.NET 3.5(客户端配置文件或完整版)应用程序时,仍然会出现“无法找到要运行此应用程序的运行时版本”的错误消息。

1
这被认为是有效的。你真的把它重命名为"MyApp.exe.config"了吗?请用你程序的名称替换MyApp。 - Hans Passant
不,我将它从“app.config”重命名为“app.exe.config”,因为它已经被命名为“app.config”。我的程序实际上叫做“testOnNet40only”。下面的Nathan似乎暗示用户仍然需要CLR 2.0-3.5,所以我不确定任何东西是否有效。 - Dan W
1
那似乎就是我所说的。"app.exe.config"不行,你必须把它命名为"testOnNet40Only.exe.config"。如果你使用启用了托管进程的调试器,则它需要被命名为"testOnNet40Only.vshost.exe.config"。 - Hans Passant
仍然不起作用。为了进行现实检查,我尝试将其编译为.NET 4.0,这完美地运行了。然而,编译成3.5没有成功 - 有其他的想法吗?Nathan似乎已经删除了他的答案。 - Dan W
你在Windows中有“隐藏文件扩展名”吗?我打赌这个文件的名称是“application.exe.config.txt”或类似的东西。 - Daniel Mann
那不是问题所在,但你说话的方式(几乎是我“提供”文件,而不是VS)让我找到了真正的答案。也许我可以把赏金分一半给你和汉斯(虽然你们不需要它;)) - Dan W
1个回答

6
我解决了。这听起来有些傻,但事实证明配置文件需要与用户文件夹中的最终可执行文件一起。在我所有的研究中,似乎没有任何地方明确说明这一点。我曾认为它只用于编译目的,应该放在开发人员的文件夹中。
在VS编辑器文件列表中,它可以保持为“app.config”。然而,在编译时,VS会自动创建“{ProgramName}.exe.config”(并将其放在bin/release文件夹中)。这是需要与可执行文件一起放在最终用户文件夹中的文件。
总之,是的,可以在只安装了.NET 4.0的系统上运行.NET 3.5应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接