在另一个程序集中找到Razor Pages
我想在另一个程序集中找到My Project Razor Pages。 为此,我写下面的代码:
public void ConfigureServices(IServiceCollection services) { var adminAssembly = Assembly.Load(new AssemblyName("App")); services.AddMvc().AddApplicationPart(adminAssembly).AddRazorOptions(options => { var previous = options.CompilationCallback; options.CompilationCallback = context => { previous?.Invoke(context); context.Compilation = context.Compilation.AddReferences( MetadataReference.CreateFromFile(typeof(dodo).Assembly.Location)); }; }); services.Configure(options => { options.FileProviders.Add(new EmbeddedFileProvider(Assembly.Load("App"))); options.FileProviders.Add(new PhysicalFileProvider(@"C:\Users\soheil\Documents\Visual Studio 2017\Projects\WebApplication5\App")); }); }
我的解决方案
运行localhost:5000/SameTodo
获取以下错误:
缺少一个或多个编译引用。 确保您的项目引用了“Microsoft.NET.Sdk.Web”,并且“PreserveCompilationContext”属性未设置为false。
堆:
找不到类型或命名空间名称’SameTodoModel’(您是否缺少using指令或程序集引用?)+ public global :: Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 无法找到类型或命名空间名称’SameTodoModel’(您是否缺少using指令或程序集引用?)+ public global :: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary ViewData =>(global :: Microsoft.AspNetCore .Mvc.ViewFeatures.ViewDataDictionary)的PageContext .ViewData?; 找不到类型或命名空间名称’SameTodoModel’(您是否缺少using指令或程序集引用?)+ public SameTodoModel Model => ViewData.Model; 找不到类型或命名空间名称’SameTodoModel’(您是否缺少using指令或程序集引用?)+ public global :: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary ViewData =>(global :: Microsoft.AspNetCore。 Mvc.ViewFeatures.ViewDataDictionary)的PageContext .ViewData?;
并将PreserveCompilationContext
设置为false但现在工作如何解决此问题?
public void ConfigureServices(IServiceCollection services) { var adminAssembly = Assembly.Load(new AssemblyName("App")); services.AddMvc().AddApplicationPart(adminAssembly).AddRazorOptions(options => { var previous = options.CompilationCallback; options.CompilationCallback = context => { previous?.Invoke(context); var referenceAssemblies = AppDomain.CurrentDomain.GetAssemblies() .Where(x => !x.IsDynamic&& !string.IsNullOrEmpty(x.Location)) .Select(x => MetadataReference.CreateFromFile(x.Location)) .ToList(); //add dynamic var dynamicAssembly = typeof(DynamicAttribute).Assembly; referenceAssemblies.Add(MetadataReference.CreateFromFile(dynamicAssembly.Location)); context.Compilation = context.Compilation.AddReferences(referenceAssemblies); }; }); services.Configure(options => { options.FileProviders.Add(new EmbeddedFileProvider(Assembly.Load("App"))); options.FileProviders.Add(new PhysicalFileProvider(@"C:\Users\soheil\Documents\Visual Studio 2017\Projects\WebApplication5\App")); }); }
而不是新建AssemblyName,使用该程序集中的类型的引用:
var adminAssembly = typeof(SameTodoModel).Assembly;
此外,错误消息显示:’PreserveCompilationContext’属性未设置为false。
意思是它应该设置为true。
您是否需要在WebApplication5的_ViewImports.cshtml中使用@using语句? 喜欢@using App.SameTodoModel
- entity framework核心 – 将小数精度和比例设置为所有小数属性
- 我应该如何将一个DbContext实例注入IHostedService?
- 将.NETFramework 4.5 dll添加到.NETCore项目中
- ASP.NET 5,MVC6,WebAPI – > ModelState.IsValid始终返回true
- Asp.Net Core – 最简单的表单身份validation
- 通过.NET Core上的MEF将参数传递给插件构造函数?
- 如何关闭ASP.NET核心框架完成的日志记录
- .net核心石英dependency injection
- .NET核心entity framework – 在类库中为Context添加迁移