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

slwdgvem  于 11个月前  发布在  .NET
关注(0)|答案(1)|浏览(193)

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

类别:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace NetUtils
{
    public class NDUtils
    {
        public void ShowConnectDialog(Form ParentForm)
        {
            zDisplayDialog(ParentForm, 1);
        }

        public void ShowDisconnectDialog(Form ParentForm)
        {
            zDisplayDialog(ParentForm, 2);
        }

        private void zDisplayDialog(Form poParentForm, int piDialog)
        {
            int num = -1;
            int phWnd = 0;
            if (poParentForm != null)
            {
                phWnd = poParentForm.Handle.ToInt32();
            }
            switch (piDialog)
            {
            case 1:
                num = WNetConnectionDialog(phWnd, 1);
                break;
            case 2:
                num = WNetDisconnectDialog(phWnd, 1);
                break;
            }
            if (num > 0)
            {
                throw new Win32Exception(num);
            }
            poParentForm.BringToFront();
        }

        [DllImport("mpr.dll")]
        private static extern int WNetConnectionDialog(int phWnd, int piType);

        [DllImport("mpr.dll")]
        private static extern int WNetDisconnectDialog(int phWnd, int piType);
    }
}

字符串

Csproj:

<!-- also tried Microsoft.NET.Sdk to no avail -->
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>


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

sauutmhj

sauutmhj1#

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

相关问题