MSBuild 不会将视图复制到输出文件夹



升级到.NET Core 3.1后,我自制的构建系统坏了。问题来了。我使用 MSBuild 在 CI/CD 管道中发布项目。这是我的代码:

"C:Program Files (x86)Microsoft Visual Studio2019CommunityMSBuildCurrentBinMSBuild.exe" C:CompanySolutionSolution.sln /t:UserPanel /p:DeployOnBuild=true /p:PublishProfile=DeployUserPanel /p:SolutionDir=C:CompanySolution /property:PublishFolder=C:PublishSolutionUserPanel /t:Publish

完全相同的代码会将.cshtml文件发布到 .NET Core 2.2 中的输出目录。但是现在我需要手动将它们从我的UserPanel项目复制/粘贴到发布文件夹中,这当然会破坏 CI/CD 自动化。

我应该怎么做才能解决它?

.NET Core 移至预编译 cshtml 文件,因此生产中不再需要它们。您将看到,发布输出中也应该有一个包含已编译视图的[YourApp].Views.dll

如果绝对需要旧行为,请参阅 ASP.NET Core 中的 Razor 文件编译,了解有关配置 Razor 运行时编译的文档。

归根结底是将 csproj 更改为

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<CopyRefAssembliesToPublishDirectory>true</CopyRefAssembliesToPublishDirectory>
<CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
</PropertyGroup>

并更改您的 Startup.cs以在配置 MVC 的调用中包含.AddRazorRuntimeCompilation()

public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews()
.AddRazorRuntimeCompilation();
}

最新更新