ビューコンポーネントはコンパイル時に知る必要はありません。実行時にそれらを参照することはできますが、いくつかのトリックがあります。まず、クラスライブラリ内のファイルcshtml
を埋め込みリソースとして含める必要があります。これは、クラスライブラリのproject.jsonに以下を追加することによって行うことができますあなたのWebアプリのStartup.ConfigureServices
方法で
"buildOptions": {
"embed": "Views/**/*.cshtml"
}
、あなたはRazorViewEngineOptions
に埋め込まれたファイルプロバイダを追加する必要があります。ここでは、既知のアセンブリでこれを行う例を示します。あなたのケースでは
//Get a reference to the assembly that contains the view components
var assembly = typeof(ViewComponentLibrary.ViewComponents.SimpleViewComponent).GetTypeInfo().Assembly;
//Create an EmbeddedFileProvider for that assembly
var embeddedFileProvider = new EmbeddedFileProvider(
assembly,
"ViewComponentLibrary"
);
//Add the file provider to the Razor view engine
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(embeddedFileProvider);
});
あなたのプラグインディレクトリで見つかった各アセンブリのためAssemblyLoadContext.Default.LoadFromAssemblyPath
を使用して行うことができ、動的にそれらのアセンブリをロードする必要があります。
アプリケーションと特定のユースケースについてもっと知らなくても、ビューコンポーネントのデータをどのように保存するかという質問に答えることは難しいです。
ここでは、ブログの投稿のビューコンポーネントを使用するプロセスを、http://www.davepaquette.com/archive/2016/07/16/loading-view-components-from-a-class-library-in-asp-net-core.aspx
と概説しました。