您可以创建一个程序/函数来测试 .NET Core 版本中不存在的特性/库。例如:
using System;
public class CoreChecker
{
public static void Main(string args[])
{
try
{
ImportNonCoreComponent();
Console.WriteLine("NonCoreAssembly found... this is full server.");
}
catch (Exception e)
{
Console.WriteLine("NonCoreAssembly not found... this is core server.");
}
}
public static void ImportNonCoreComponent()
{
using NonCoreAssembly;
}
}
如果这不起作用,您需要将 using 移动到类范围,然后在 ImportNonCoreComponent 中从 NonCoreAssembly 创建一个类(我不记得它是如何工作的确切语义)。
注意: using 语句需要与测试函数隔离。当 JIT 编译器处理它时,它会抛出一个异常。该异常不会被测试函数处理,因此 try...catch 语句需要在调用它的方法中。
您可以使用此技术在 MSI 中实现自定义操作以在安装期间失败,或者将其用作 C# 应用程序的一部分以显示“您需要使用完整服务器”的消息。(如果他们安装应用程序然后降级到核心,这将起作用)。
如果差异是行为上的,您可以在测试函数中检查该行为。
确保测试功能适用于不同的场景和不同的 .NET 版本。