.NET类库,带有针对.NET Standard 2.0的WinForms依赖项

slwdgvem  于 2023-11-21  发布在  .NET
关注(0)|答案(1)|浏览(281)

我正在迁移一个.NET Framework类库,它现在需要与.NET Framework和.NET Core应用程序兼容;该库依赖于System.Windows.Forms命名空间。
为了实现这种兼容性,我决定将.NET Standard 2.0作为我的类库的目标,因为它可以被.NET Framework和.NET Core项目使用。
但是,我遇到了以下错误的问题:
错误CS 0234类型或命名空间名称“Forms”在命名空间“System.Windows”中不存在(是否缺少程序集引用?)
以下是我的课程和项目设置:

类别:

  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Windows.Forms;
  4. namespace NetUtils
  5. {
  6. public class NDUtils
  7. {
  8. public void ShowConnectDialog(Form ParentForm)
  9. {
  10. zDisplayDialog(ParentForm, 1);
  11. }
  12. public void ShowDisconnectDialog(Form ParentForm)
  13. {
  14. zDisplayDialog(ParentForm, 2);
  15. }
  16. private void zDisplayDialog(Form poParentForm, int piDialog)
  17. {
  18. int num = -1;
  19. int phWnd = 0;
  20. if (poParentForm != null)
  21. {
  22. phWnd = poParentForm.Handle.ToInt32();
  23. }
  24. switch (piDialog)
  25. {
  26. case 1:
  27. num = WNetConnectionDialog(phWnd, 1);
  28. break;
  29. case 2:
  30. num = WNetDisconnectDialog(phWnd, 1);
  31. break;
  32. }
  33. if (num > 0)
  34. {
  35. throw new Win32Exception(num);
  36. }
  37. poParentForm.BringToFront();
  38. }
  39. [DllImport("mpr.dll")]
  40. private static extern int WNetConnectionDialog(int phWnd, int piType);
  41. [DllImport("mpr.dll")]
  42. private static extern int WNetDisconnectDialog(int phWnd, int piType);
  43. }
  44. }

字符串

Csproj:

  1. <!-- also tried Microsoft.NET.Sdk to no avail -->
  2. <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  3. <PropertyGroup>
  4. <TargetFramework>netstandard2.0</TargetFramework>
  5. <UseWindowsForms>true</UseWindowsForms>
  6. </PropertyGroup>
  7. </Project>


我知道System.Windows.Forms不是.NET Standard 2.0的一部分,但我需要在我的库中使用它。如何解决此问题,同时保持与.NET Framework和.NET Core的兼容性?

sauutmhj

sauutmhj1#

我会远离.NET标准和多目标.NET框架和.NET核心。

相关问题