1

我正在尝试使用 ASP.NET Core 2.1 后端提供 API 和 Angular 前端。Startup.cs是在项目中MyApp.Api。我希望从另一个项目的 wwwroot 中提取我的静态文件,MyApp.FrontEnd.

我看过这篇文章,它描述了以下方法

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 存储库似乎不再存在。我想我错过了一个相当明显的地方。任何帮助,将不胜感激。

4

1 回答 1

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")
});
于 2018-06-22T21:38:30.747 回答