.Net框架4.7.2引用.Net标准2.0项目。

问题描述 投票:0回答:1

我的情况:我有一个.Net 4.7.2 WinForms应用程序.它引用的项目是一个.Net标准类库.Net标准库引用Microsoft.SqlServer.SqlManagementObjects NuGet包使用PackageReference。

当我构建winforms应用程序时,它从net462 lib文件夹而不是netstandard2.0文件夹中拉入Microsoft.SqlServer.SqlManagementObjects包。这是一个问题,因为.Net标准版的库有不同的类(例如,它使用Microsoft.Data.SqlConnection而不是System.Data.SqlConnection)。所以当应用程序运行时,你会得到一个错误,说System.MissingMethodException.Method not found: 'Void Microsoft.Data.SqlConnection'。Method not found: 'Void Microsoft.SqlServer.Management.Common.ServerConnection.ctor(Microsoft.Data.SqlClient.SqlConnection)' 。

有什么办法可以解决这个问题吗?我觉得如果SMO库有这样的差异,应该把SMO库分成.Net Standard和.Net Framework的不同包。

c# smo .net-standard-2.0 .net-4.7.2
1个回答
0
投票

我相信官方的立场是,这是库的编写问题,所以没有一个好的方法来做你想要的事情。

有一个令人发指的黑客详解 此处 虽然,这是像。

<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" ExcludeAssets="Compile" GeneratePathProperty="true">
    <Version>1.2.3</Version> 
</PackageReference>
<Reference Include="Microsoft.SqlServer.SqlManagementObjects">
    <HintPath>$(PkgMicrosoft_SqlServer_SqlManagementObjects)lib\netstandard2.0\Microsoft.SqlServer.SqlManagementObjects.dll</HintPath> 
</Reference>
© www.soinside.com 2019 - 2024. All rights reserved.