Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单元测试项目中编译razor视图_Razor_Asp.net Core_.net Core_Mstest - Fatal编程技术网

如何在单元测试项目中编译razor视图

如何在单元测试项目中编译razor视图,razor,asp.net-core,.net-core,mstest,Razor,Asp.net Core,.net Core,Mstest,我试图在单元测试项目中使用。然而,当我调用它时,我得到了与razor编译相关的错误: 缺少一个或多个编译引用。确保您的项目正在引用“Microsoft.NET.Sdk.Web”,并且“PreserveComilationContext”属性未设置为false .cshtml文件作为嵌入式资源和单元测试项目引用包含在测试项目中。所有这些文件在我运行web项目时有效,但在我从单元测试项目调用它时无效: var sp = ConfigureServices(); sp.GetService<Ra

我试图在单元测试项目中使用。然而,当我调用它时,我得到了与razor编译相关的错误:

缺少一个或多个编译引用。确保您的项目正在引用“Microsoft.NET.Sdk.Web”,并且“PreserveComilationContext”属性未设置为false

.cshtml文件作为嵌入式资源和单元测试项目引用包含在测试项目中。所有这些文件在我运行web项目时有效,但在我从单元测试项目调用它时无效:

var sp = ConfigureServices();
sp.GetService<RazorViewToStringRenderer>();


void ConfigureServices()
{
    var services = new ServiceCollection();
    var applicationEnvironment = PlatformServices.Default.Application;
    services.AddSingleton(applicationEnvironment);
    services.AddSingleton<IHostingEnvironment>(new HostingEnvironment
    {
        WebRootFileProvider = new PhysicalFileProvider(applicationEnvironment.ApplicationBasePath),
        ApplicationName = Path.GetFileName(applicationEnvironment.ApplicationBasePath)
    });
    var diagnosticSource = new DiagnosticListener("Microsoft.AspNetCore");
    services.AddSingleton<DiagnosticSource>(diagnosticSource);
    services.AddSingleton<ObjectPoolProvider, DefaultObjectPoolProvider>();
    services.AddLogging();
    var embeddedProvider = new EmbeddedFileProvider(typeof(Startup).Assembly); //needed for mailtemplates
    var compositeProvider = new CompositeFileProvider(embeddedProvider);
    services.AddSingleton(compositeProvider);
    services.AddMvc().AddRazorOptions(options => options.FileProviders.Add(compositeProvider));

    services.AddTransient<RazorViewToStringRenderer>();

    return services.BuildServiceProvider();
}
var sp=ConfigureServices();
sp.GetService();
void ConfigureServices()
{
var services=newservicecolection();
var applicationEnvironment=PlatformServices.Default.Application;
AddSingleton(applicationEnvironment);
services.AddSingleton(新主机环境)
{
WebRootFileProvider=新的物理文件提供程序(applicationEnvironment.ApplicationBasePath),
ApplicationName=Path.GetFileName(applicationEnvironment.ApplicationBasePath)
});
var diagnosticSource=new diagnosticslistener(“Microsoft.AspNetCore”);
服务。AddSingleton(诊断源);
services.AddSingleton();
services.AddLogging();
var embeddedProvider=new EmbeddedFileProvider(typeof(Startup).Assembly);//邮件模板需要
var compositeProvider=新的CompositeFileProvider(embeddedProvider);
服务。AddSingleton(compositeProvider);
services.AddMvc().AddRazorOptions(options=>options.FileProviders.Add(compositeProvider));
services.AddTransient();
return services.BuildServiceProvider();
}
{Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException: 发生一个或多个编译失败:lfrn3mzv.yfv(4,62):错误 CS0012:类型“Attribute”是在未定义的程序集中定义的 引用。必须添加对程序集“netstandard”的引用, 版本=2.0.0.0,区域性=中性,PublicKeyToken=CC7B13FFCD2DD51'。 lfrn3mzv.yfv(4,81):错误CS0518:预定义类型“System.String”为 未定义或导入lfrn3mzv.yfv(4145):错误CS0518:预定义 未定义或导入lfrn3mzv.yfv(4,11)类型“System.type”: lfrn3mzv.yfv(11,11):错误 CS0246:找不到类型或命名空间名称“System”(是 是否缺少using指令或程序集引用?) lfrn3mzv.yfv(14,36):错误CS0234:类型或命名空间名称 命名空间中不存在“ViewFeatures” “Microsoft.AspNetCore.Mvc”(是否缺少程序集引用?) lfrn3mzv.yfv(20129):错误CS0246:类型或命名空间名称“TACS” 找不到(是否缺少using指令或程序集 参考?)lfrn3mzv.yfv(20,80):错误CS0012:类型“Object”为 在未引用的程序集中定义。必须添加 引用程序集的netstandard,版本=2.0.0.0,区域性=neutral, PublicKeyToken=CC7B13FFCD2DD51'.lfrn3mzv.yfv(23,67):错误CS1983: 异步方法的返回类型必须为void、Task或Task lfrn3mzv.yfv(23,39):错误CS0400:类型或命名空间名称“System” 在全局命名空间中找不到(是否缺少

“\u AppCode\u Mail\u Notifications\u SponsorReview\u SFNegative\u cshtml.ExecuteAsync()”: 并非所有代码路径都返回值lfrn3mzv.yfv(20,18):错误CS0518: 未定义或导入预定义类型“System.Void” /AppCode/Mail/Notifications/_ViewImports.cshtml(1,7):错误CS0246: 找不到类型或命名空间名称“TACS”(是否缺少 使用指令或组件引用?) /AppCode/Mail/Notifications/SponsorReview/SFNegative.cshtml(4,92): 错误CS0012:类型“Object”是在未定义的程序集中定义的 引用。必须添加对程序集“netstandard”的引用, 版本=2.0.0.0,区域性=中性,PublicKeyToken=CC7B13FFCD2DD51'。 /AppCode/Mail/Notifications/SponsorReview/SFNegative.cshtml(4,92): 错误CS0518:未定义预定义类型“System.Object”,或 进口的 /AppCode/Mail/Notifications/SponsorReview/SFNegative.cshtml(4,92): 错误CS0518:未定义或导入预定义类型“System.Void” /AppCode/Mail/Notifications/SponsorReview/SFNegative.cshtml(6,38): 错误CS0012:类型“Object”是在未定义的程序集中定义的 引用。必须添加对程序集“netstandard”的引用, 版本=2.0.0.0,区域性=中性,PublicKeyToken=CC7B13FFCD2DD51'。 /AppCode/Mail/Notifications/SponsorReview/SFNegative.cshtml(6,38): 错误CS0518:未定义预定义类型“System.Object”,或 进口的 /AppCode/Mail/Notifications/SponsorReview/SFNegative.cshtml(6,38): 错误CS0518:未定义或导入预定义类型“System.Void” 在 Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndimit(RazorCodeDocument 代码文档,字符串生成代码)位于 Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndimit(字符串 相对路径)在 Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CreateCacheEntry(字符串 标准化路径(0) ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在System.Runtime.CompilerServices.TaskAwaiter
1.GetResult()中
在
Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorPageFactoryProvider.CreateFactory(字符串
相对路径)在
Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.CreateCacheResult(HashSet
1 expirationTokens、字符串相对路径、布尔值isMainPage)位于 Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.LocatePageFromPath(字符串 executingFilePath、字符串pagePath、布尔值isMainPage)位于 Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.GetView(字符串 executingFilePath、字符串viewPath、布尔值isMainPage)位于 TACS.Web.AppCode.Mail.ViewRenderServ
 <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="A line each for all my other namespaces ..." />
        <add namespace="A line each for all my other namespaces ..." />
        <add namespace="A line each for all my other namespaces ..." />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
@import Microsoft.NET.Sdk.Web
@import ....