'Npgsql.TypeMapping.GlobalTypeMapper' 的类型初始值设定项抛出异常
The type initializer for 'Npgsql.TypeMapping.GlobalTypeMapper' threw an exception
使用 Visual Studio 2017 尝试使用服务器资源管理器添加到 Postgres 数据库的连接。单击测试连接。问题显示错误:'Npgsql.TypeMapping.GlobalTypeMapper' 的类型初始值设定项引发异常。
在此之前,我安装了 System.Runtime.CompilerServices.Unsafe v4.5.2 和 System.Numerics.Vectors v4.4.0 以修复错误消息 "Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1" 和无法加载文件或程序集 'System.Numerics.Vectors,版本=4.1.3.0.
我不知道如何解决这个问题"The type initializer for 'Npgsql.TypeMapping.GlobalTypeMapper' threw an exception."
我只想将 PostgreSQL 数据库的连接添加到 Visual Studio 2017。我已经在 postgres 中有一个数据库...我不知道我要先安装什么来添加该连接.
在Visual Studio=>工具=>扩展和更新中安装 Npgsql PostgresSQL 集成后,我创建了新项目并直接进入管理 Nuget 包并安装了 System.Runtime.CompilerServices.Unsafe v4.5.2 和 System.Numerics.Vectors v4.4.0。
我直接尝试在服务器资源管理器中添加连接。
我对此一无所知。我只是想在 visual studio 中添加 postgres 的数据连接,以便我可以添加 ADO.NET 实体数据模型。
更多技术细节
.NET 框架 4.6.1
Npgsql 版本 4.1.1.2
这是我找到的一个潜在修复方法。很难确切地理解这是做什么的,但它确实有效!您可以将其添加到根目录中的 csproj 文件中。通过 here 找到这个。这似乎是一种黑客攻击。不知道有没有解决问题的根源。
<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>
对于Npgsql 4.1.x版本有此类问题的,只需升级到最新版本4.1.11
使用 Visual Studio 2017 尝试使用服务器资源管理器添加到 Postgres 数据库的连接。单击测试连接。问题显示错误:'Npgsql.TypeMapping.GlobalTypeMapper' 的类型初始值设定项引发异常。
在此之前,我安装了 System.Runtime.CompilerServices.Unsafe v4.5.2 和 System.Numerics.Vectors v4.4.0 以修复错误消息 "Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1" 和无法加载文件或程序集 'System.Numerics.Vectors,版本=4.1.3.0.
我不知道如何解决这个问题"The type initializer for 'Npgsql.TypeMapping.GlobalTypeMapper' threw an exception."
我只想将 PostgreSQL 数据库的连接添加到 Visual Studio 2017。我已经在 postgres 中有一个数据库...我不知道我要先安装什么来添加该连接.
在Visual Studio=>工具=>扩展和更新中安装 Npgsql PostgresSQL 集成后,我创建了新项目并直接进入管理 Nuget 包并安装了 System.Runtime.CompilerServices.Unsafe v4.5.2 和 System.Numerics.Vectors v4.4.0。 我直接尝试在服务器资源管理器中添加连接。 我对此一无所知。我只是想在 visual studio 中添加 postgres 的数据连接,以便我可以添加 ADO.NET 实体数据模型。
更多技术细节 .NET 框架 4.6.1 Npgsql 版本 4.1.1.2
这是我找到的一个潜在修复方法。很难确切地理解这是做什么的,但它确实有效!您可以将其添加到根目录中的 csproj 文件中。通过 here 找到这个。这似乎是一种黑客攻击。不知道有没有解决问题的根源。
<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>
对于Npgsql 4.1.x版本有此类问题的,只需升级到最新版本4.1.11