. Net Framework 4.7.2 Ссылки. Net Проект Standard 2.0 - PullRequest
1 голос
/ 09 мая 2020

Моя ситуация: у меня есть приложение WinForms. Net 4.7.2. Он ссылается на проект, который представляет собой. Net стандартную библиотеку классов. Net Стандартная библиотека ссылается на пакет Microsoft.SqlServer.SqlManagementObjects NuGet с помощью PackageReference

Когда я создаю приложение winforms, оно извлекает пакет Microsoft.SqlServer.SqlManagementObjects из папки net462 lib вместо папки netstandard2.0. Это проблема, потому что. Net Стандартная версия библиотеки имеет разные классы (например, она использует Microsoft.Data.SqlConnection вместо System.Data.SqlConnection). Поэтому при запуске приложения вы получаете сообщение об ошибке: System.MissingMethodException: Method not found: 'Void Microsoft.SqlServer.Management.Common.ServerConnection..ctor (Microsoft.Data.SqlClient.SqlConnection)'

Is есть ли способ обойти это? Мне кажется, библиотеки SMO ​​следовало разделить на разные пакеты для. Net Standard и. Net Framework, если у них есть такие отличия.

1 Ответ

0 голосов
/ 09 мая 2020

Я считаю, что официальная позиция заключается в том, что это проблема разработки библиотеки, поэтому нет хорошего способа делать то, что вы хотите.

Здесь подробно описан отвратительный хак здесь , что-то вроде:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...