How to fix "Cannot find compilation library location for package 'Microsoft.Win32.Registry'"


ASP.NET Core アプリケーションを CentOS7 にデプロイして実行すると、以下のエラーが出ました。

fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0] An unhandled exception has occurred: Cannot find compilation library location for package 'Microsoft.Win32.Registry'

この問題を解決するには、

<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>

を .csproj に追加します。

以下が、.csproj のサンプルになります。

<Project Sdk="Microsoft.NET.Sdk.Web">
  
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
  </ItemGroup>
</Project>

この設定をした上で、再度デプロイして実行したらエラーが発生しなくなりました。

.NET Coreはなかなかいいのですが、完成度がもう少しかもしれませんね。