![](/img/trans.png)
[英]EntityFramwork compatibility with .net framework 4.7.2 projects and .net standard 2.0 project
[英].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.