针对较旧的 .NET 框架编译单独的 C# 文件

本文关键字:编译 单独 文件 框架 NET | 更新日期: 2023-09-27 18:31:54

我有一个简短的 C# 脚本,它使用语言的各种功能和不同的 .NET 库:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Text;
using System.Threading;
using Microsoft.Win32.SafeHandles;

完整的脚本可以在这里找到。

我用这个命令编译它:

%WINDIR%'Microsoft.NET'Framework'v3.5'csc.exe code.cs /debug /nologo

但事实证明,默认情况下,.NET Framework v3.5在某些Windows发行版上不可用。

编译此代码以使其在 Windows Vista、7、8、8.1 和 Server 2008 上运行而无需下载和安装 .NET 框架的最佳方法是什么?

我试着寻找

%WINDIR%'Microsoft.NET'Framework'v3.0'csc.exe

二进制,但它在我的机器上不存在。

针对较旧的 .NET 框架编译单独的 C# 文件

据我所知,没有 .NET 3 的编译器,因为它是带有一些额外程序集的 just.NET 2。因此,除了 tjere 编译器之外,不需要另一个编译器:.NET 编译器。

因此,您应该能够使用该编译器编译项目,该编译器位于 WINDIR%'Microsoft.NET'Framework'v2.0.50727'csc.exe .

只要代码不使用 .NET 4 特定功能,这将起作用。然后,您需要使用该编译器,并在尚未具有该版本的每个系统上安装 .NET 客户端。

app.config文件中,需要指定希望应用支持的运行时。因此,如果您想支持 3.0 或更高版本,则需要拥有。

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

您还需要确保项目设置中仅面向 .NET 3.0,因为这是与 Windows Vista 捆绑在一起的版本。

如果在添加-删除程序中禁用了 .NET,则无法执行任何操作,您需要让用户自行安装某个版本,或者将其作为部署的一部分进行安装(安装程序安装程序或一键式)。