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