我在Windows 10上使用VS2017来处理C#项目.它是一个非常小的控制台应用程序,只需要管理员权限,然后运行HTA.
代码仅引用这些.NET程序集:
using System;
using System.Diagnostics;
using System.IO;
Run Code Online (Sandbox Code Playgroud)
由于所有这些都存在于.NET以及2.0之后,因此似乎应该可以创建应用程序而无需指定除.NET 2.0之外的任何内容.但这样做会导致应用程序在仅具有.NET 4.0或更高版本的系统上运行时显示"必须安装.NET 2.0或3.5"消息.
有没有办法创建这个应用程序,所以它没有指定.NET版本?我尝试删除<TargetFrameworkVersion>.csproj文件,但它仍然认为它是一个.NET 4.0应用程序.
UPDATE
基于建议的答案和本文,我更新了App.config以显示它支持v2和v4:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
Run Code Online (Sandbox Code Playgroud)
然后,我将目标设置为.NET Framework 4.6.1,并在安装了.NET Framework 2.0/3.5的Win7Pro-64bit系统上运行.它显示消息"您必须首先安装以下版本的.NET Framework之一",并且仅列出了v4.0.30319.
然后,我将目标设置为.NET Framework 2.0,并在安装了.NET Framework 4.0的Win10Pro-64bit系统上运行.它显示一条消息,我必须"NET Framework 3.5"或我的应用程序可能无法正常工作.我尝试了"跳过这个"选项,但应用程序无效.
根据目标在系统上运行,应用程序运行正常.
为什么它不会只使用任何可用的框架,因为它被指定为支持两者?
在 App.Config 中,您可以指定可以支持的运行时版本。
<configuration>
<startup>
<supportedRuntime version="v1.1.4322"/>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
与任何事情一样,您应该测试您的应用程序实际上可以在所有指定版本上运行。
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |