Soh*_*deh 2 c# razor asp.net-core-mvc asp.net-core razor-pages
我想在另一个程序集中找到“我的项目 Razor 页面”。为此,我编写以下代码:
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<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(new EmbeddedFileProvider(Assembly.Load("App")));
options.FileProviders.Add(new PhysicalFileProvider(@"C:\Users\soheil\Documents\Visual Studio 2017\Projects\WebApplication5\App"));
});
}
Run Code Online (Sandbox Code Playgroud)
我的解决方案:
运行时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<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(new EmbeddedFileProvider(Assembly.Load("App")));
options.FileProviders.Add(new PhysicalFileProvider(@"C:\Users\soheil\Documents\Visual Studio 2017\Projects\WebApplication5\App"));
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2655 次 |
最近记录: |