代码之家  ›  专栏  ›  技术社区  ›  AdvApp

创建。NET应用程序,可在任何。NET版本,如果只有基本要求

  •  6
  • AdvApp  · 技术社区  · 8 年前

    我正在使用Windows 10上的VS2017处理一个C#项目。这是一个非常小的控制台应用程序,只需要管理员权限,然后运行HTA。

    代码仅引用这些。网络组件:

    using System;
    using System.Diagnostics;
    using System.IO;
    

    因为所有这些都存在于。NET和forward,似乎应该可以创建应用程序,而无需指定任何内容。净值2.0。但这样做会导致应用程序在只有一个服务器的系统上运行时显示“必须安装.NET 2.0或3.5”消息。NET 4.0或更高版本。

    有没有办法创建这个应用程序,这样它就不会指定。NET版本?我尝试删除 <TargetFrameworkVersion> 从。csproj文件,但它仍然认为它是一个。NET 4.0应用程序。

    更新

    基于建议的答案 article ,我更新了应用程序。配置以显示它同时支持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-64位系统上运行它。它显示消息“您必须首先安装以下版本的.NET Framework之一”,仅列出v4.0.30319。

    然后,我将目标设置为NET Framework 2.0,并在只安装了NET Framework 4.0的Win10Pro-64位系统上运行它。它显示了一条消息,说我必须“NET Framework 3.5”,否则我的应用程序可能无法正常工作。我尝试了“跳过这个”选项,但应用程序没有运行。

    根据目标在系统上运行,该应用程序运行良好。

    既然它被指定为支持 二者都 ?

    2 回复  |  直到 8 年前
        1
  •  3
  •   mageos    8 年前

    应用程序内部。Config您可以指定可以支持的运行时版本。

    https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-configure-an-app-to-support-net-framework-4-or-4-5

    <configuration>  
      <startup>  
        <supportedRuntime version="v1.1.4322"/>  
        <supportedRuntime version="v2.0.50727"/>
        <supportedRuntime version="v4.0"/>
      </startup>  
    </configuration>  
    

    与其他方法一样,您应该测试应用程序是否可以在所有指定版本上运行。

        2
  •  0
  •   Harun Diluka Heshan    8 年前

    不是的 app.config (字面意思),但是 myappname.exe.config 例如 C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe.config

    推荐文章