我正在尝试使用ASP.NET Core 2.1后端提供API和Angular Front-End。 Startup.cs
位于项目MyApp.Api
中。我希望从另一个项目MyApp.FrontEnd
的wwwroot中提取我的静态文件。
我见过this post,它描述了以下方法
app.UseStaticFiles(new StaticFileOptions {
FileProvider = new EmbeddedFileProvider(
assembly: Assembly.Load(new AssemblyName("OpenIddict.Assets")),
baseNamespace: "OpenIddict.Assets")
});
但是,当我尝试替换" OpenIddicts.Assets"使用我的项目名称,我收到以下错误:
FTL应用程序启动异常 System.IO.FileNotFoundException:无法加载文件或程序集 ' MyApp.FrontEnd,Culture = neutral,PublicKeyToken = null'。 该系统找不到指定的文件。 文件名:' MyApp.FrontEnd,Culture = neutral,PublicKeyToken = null'
上面链接的帖子中引用的GitHub存储库似乎已不复存在。我想我错过了一个相当明显的地方。任何帮助将不胜感激。
答案 0 :(得分:1)
MyApp.FrontEnd.dll
必须存在于输出文件夹中。如果您发布主项目(引用了MyApp.FrontEnd
),那么一切都会正常。
如果您可以从汇编中访问某些类型,则可以尝试使用Assembly.GetAssembly(type)
代替Assembly.Load(...)
,即
app.UseStaticFiles(new StaticFileOptions {
FileProvider = new EmbeddedFileProvider(
assembly: Assembly.GetAssembly(typeof(SomeClassFromAssembly)),
baseNamespace: "OpenIddict.Assets")
});