.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 バージョンで機能することを確認してください。