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