The type initializer for 'Npgsql.TypeMapping.GlobalTypeMapper' threw an exception

风格不统一 提交于 2021-01-28 20:10:58

问题


Using Visual Studio 2017 try using the Server Explorer to add a connection to a Postgres database. Click Test connection. The issue An error is shown with: The type initializer for 'Npgsql.TypeMapping.GlobalTypeMapper' threw an exception.

Before that I installed System.Runtime.CompilerServices.Unsafe v4.5.2 and System.Numerics.Vectors v4.4.0 to fix the error message "Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1" and Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.3.0.

I have no idea to fix this "The type initializer for 'Npgsql.TypeMapping.GlobalTypeMapper' threw an exception."

I just want to add the connection of PostgreSQL database to Visual Studio 2017. I already have a database in postgres... I don't know what I'm going to install first to add that connection.

After I installed Npgsql PostgresSQL Integration in Visual Studio=>Tools=> Extension and update, I created new project and go directly to Manage Nuget Packages and installed System.Runtime.CompilerServices.Unsafe v4.5.2 and System.Numerics.Vectors v4.4.0. And I directly tried to add the connection in Server Explorer. I have no idea into this. I just want to add the data connection of postgres in visual studio so that I can add ADO.NET Entity Data model.

Further technical details .NET framework 4.6.1 Npgsql version 4.1.1.2


回答1:


Here is one potential fix that I found. It is hard to understand exactly what this does, but it works! You can add this to your csproj file within the root . Found this via here. This seems to be kind of a hack. Not sure if there is a solution to the root of the problem.

<Target Name="ReplaceRefWithLib" BeforeTargets="ResolveAssemblyReferences">
    <ItemGroup>
      <_noCopyRefs Include="@(Reference)" Condition="'%(Reference.Private)' == 'false'" />
      <_noCopyRefsByFileName Include="@(_noCopyRefs->'%(FileName)')">
        <OriginalItem>%(Identity)</OriginalItem>
      </_noCopyRefsByFileName>

      <_libByFileName Include="@(ReferenceCopyLocalPaths->'%(FileName)')">
        <OriginalItem>%(Identity)</OriginalItem>
      </_libByFileName>

      <_overlappingRefByFileName Include="@(_noCopyRefsByFileName)" Condition="'@(_noCopyRefsByFileName)' == '@(_libByFileName)' AND '%(Identity)' != ''" />
      <_overlappingLibByFileName Include="@(_libByFileName)" Condition="'@(_noCopyRefsByFileName)' == '@(_libByFileName)' AND '%(Identity)' != ''" />

      <_overlappingRef Include="@(_overlappingRefByFileName->'%(OriginalItem)')" />
      <_overlappingLib Include="@(_overlappingLibByFileName->'%(OriginalItem)')" />
    </ItemGroup>

    <ItemGroup Condition="'@(_overlappingRef)' != ''">
      <Reference Remove="@(_overlappingRef)" />
      <Reference Include="@(_overlappingLib)">
        <Private>false</Private>
      </Reference>
    </ItemGroup>
  </Target>

  <Target Name="RemoveNetFxForceConflicts" AfterTargets="ResolveAssemblyReferences">
    <ItemGroup>
      <ReferencePath Remove="@(ReferencePath)" Condition="'%(FileName)' == 'netfx.force.conflicts'" />
    </ItemGroup>
  </Target>


来源:https://stackoverflow.com/questions/60330797/the-type-initializer-for-npgsql-typemapping-globaltypemapper-threw-an-exceptio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!