現在、外部アセンブリから埋め込みViewComponentsを読み込もうとしています。なぜasp.netコアmvcのEmbeddedFileProviderに埋め込みファイルが見つかりませんか?
私は私のプロジェクトファイルでこれを含めました:
<EmbeddedResource Include="Views\**\*.cshtml" />
ので、私は、実際の組み立てと実行GetManifestResourceNamesを検査するとき()私は、ファイルが埋め込まれていることがわかります。
私はその後Startup.csにConfigureService()でこのメソッドを呼び出しています:これがすべてでは動作しませんように私も
mvcBuilder.Services.Configure<RazorViewEngineOptions>(o => { o.FileProviders.Add(compositeFileProvider); });
を使用していない
public static IMvcBuilder GetModules(this IMvcBuilder mvcBuilder)
{
var embeddedFileProviders = new List<EmbeddedFileProvider>
{
new EmbeddedFileProvider(Assembly.GetCallingAssembly())
};
mvcBuilder.ConfigureApplicationPartManager(apm =>
{
foreach (string modulePath in Directory.GetFiles(Configuration.Settings.Path, "*.Module.dll"))
{
var assembly = Assembly.LoadFrom(modulePath);
var startUpType = (from t in assembly.GetTypes()
where t.GetInterfaces().Contains(typeof(IModuleStartup))
select t).FirstOrDefault();
RegisterModuleServices(mvcBuilder, startUpType);
apm.ApplicationParts.Add(new AssemblyPart(assembly));
embeddedFileProviders.Add(new EmbeddedFileProvider(assembly));
Modules.Assemblies.Add(assembly);
}
var compositeFileProvider = new CompositeFileProvider(embeddedFileProviders);
mvcBuilder.Services.AddSingleton<IFileProvider>(compositeFileProvider);
});
return mvcBuilder;
}
o.FileProviders.Add(compositeFileProvider)のアクションは呼び出されません。
IFileProviderを挿入すると、すべての埋め込みファイルプロバイダが見つかりますが、_fileProvider.GetDirectoryContents( "")を実行するとファイルが見つかりません。
誰もが何故考えているのですか?
あなた自身の回答を受け入れたものとしてマークすることができます。 –