繁体   English   中英

.Net Framework 4.7.2 引用.Net Standard 2.0 项目

[英].Net Framework 4.7.2 Referencing .Net Standard 2.0 project

我的情况:我有一个.Net 4.7.2 WinForms 应用程序。 它引用了一个项目,即 .Net Standard class 库 The.Net Standard 库使用 PackageReference 引用 Microsoft.SqlServer.SqlManagementObjects NuGet package

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

有没有办法解决? 我觉得如果 SMO 库有这样的差异,则应该将它们分成不同的包,用于 .Net Standard 和 .Net Framework。

我相信官方 position 是图书馆创作问题,所以没有一个好方法可以做你想做的事。

不过, 这里有一个令人发指的黑客攻击,类似于:

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM