【问题标题】:Error view Index.cshtml not found for ASP.NET Core 6 MVC app when build on Azure build agent在 Azure 构建代理上构建时,找不到 ASP.NET Core 6 MVC 应用程序的错误视图 Index.cshtml
【发布时间】:2022-02-21 22:42:55
【问题描述】:

在 Azure 构建代理上构建我的 ASP.NET Core 6 MVC 应用程序时,我收到错误“查看 Index.cshtml 未找到”,但在本地构建时,它工作正常。

我尝试了在构建代理上执行的相同命令,但仍然无法解决问题。尝试了几次代码更改来解决此问题,但仍然没有任何线索。即使在 stackoverflow 上也在网上搜索,但遗憾的是没有解决方案。

请有人帮帮我。

我在 pipeline.yaml 中使用以下输入:

      solution: 'src/Indl.Web.Core.sln'
      msbuildArgs: '/property:OutDir="$(BUILD.BINARIESDIRECTORY)"\x64\ /p:RunWixToolsOutOfProc=true /p:PackageVersion=$(GitVersion.SemVer) /p:SASigning=true /p:SACertificate=prod.prot /p:PackageOutputPath="$(BUILD.BINARIESDIRECTORY)"\x64\'
      platform: 'x64'
      vsVersion: '16.0'
      configuration: 'Release'
      clean: true
      msbuildArchitecture: 'x64

该解决方案还有一个按预期工作的 mvc 应用程序。 我交叉验证了 dll,发现 dll 中没有“AspNetCoreGeneratedDocument”部分,该部分通常包含所有视图相关信息。

【问题讨论】:

  • 任何社区成员都没有兴趣解决我的问题,是不是我在错误的论坛上发布了我的问题,有人可以建议更好的论坛名称....

标签: azure-devops asp.net-core-mvc .net-6.0


【解决方案1】:

几天前我遇到了同样的问题。我怀疑这个问题与 .net 6.0.2 的更新有关。

看起来,随着更新包“Microsoft.CodeAnalysis.Compilers”和“Microsoft.Net.Compilers.Toolset”丢失了。

在所有包含 .cshtml/.html 文件的项目中添加以下行后,一切都按预期运行,并且这些文件在 DLL 中的 AspNetCoreGeneratedDocument 下可用。

<PackageReference Include="Microsoft.CodeAnalysis.Compilers" Version="4.1.0" />
<PackageReference Include="Microsoft.Net.Compilers.Toolset" Version="4.1.0">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

【讨论】:

  • 哇,这太棒了!原始帖子描述了我遇到的相同症状,但我已经指定使用 MSBuild 版本 17.0,因此从接受的答案中没有任何收获。但是,只需添加您建议的两个 NuGet 包,它就开始工作了。是什么让您发现了这一点?
  • 我刚刚花了 8 小时试图找出我的 CICD 管道损坏的原因。这就是答案。我永远不会解决这个问题。 Bene Schmaler 你是我心目中的传奇人物!我完全不知道你是如何解决这个问题的。干得好,一千谢谢。
  • 我的一位同事在服务器日志中发现无法找到程序集“Microsoft.CodeAnalysis”。经过一番搜索,我们找到了丢失的包。我们认为,可能在 .net 6.0.2 中的“Buildtree”的某个地方,PrivateAssets 更改为 all,这就是为什么不再默认交付的原因。所以我们也应该给我的同事们提供道具:D
  • 有人告诉微软这件事吗?我怀疑在接下来的几天里,会有更多的人来到这条黑暗的小巷。
  • 我现在已经创建了一个:github.com/dotnet/core/issues/7221
【解决方案2】:

请在 pipeline.yaml 中使用以下命令 希望它应该工作。

solution: 'src/Indl.Web.Core.sln'
  msbuildArgs: '/property:OutDir="$(BUILD.BINARIESDIRECTORY)"\x64\ /p:RunWixToolsOutOfProc=true /p:PackageVersion=$(GitVersion.SemVer) /p:SASigning=true /p:SACertificate=prod.prot /p:PackageOutputPath="$(BUILD.BINARIESDIRECTORY)"\x64\'
  platform: 'x64'
  vsVersion: '17.0'
  configuration: 'Release'
  clean: true
  msbuildArchitecture: 'x64

实际上您使用的是 vs 2019(16.0) 的 vsVersion,但由于您正在编译 .Net 6.0,它在 vs 2022(17.0) 中完全受支持

【讨论】:

  • 感谢您的回复,是的,我是在 vs2022 本地构建的,我会执行您的这个建议。看看它是否有效。
猜你喜欢
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
相关资源
最近更新 更多