Visual Studio Windows Ошибка конструктора форм - PullRequest
1 голос
/ 03 апреля 2020

Я работаю над стандартной библиотекой классов. NET в Visual Studio 2019, которая предназначена для обоих типов NET Standard 2.1 и. NET Framework 4.7.2. Я хочу, чтобы он был совместим с WinForms. NET Framework и WPF. NET Core 3.1. Одной из его зависимостей является Entity Framework 6.4, которая работает только с. NET Standard 2.1 или. NET Framework 4.7.2, поэтому я не могу понизиться до. NET Standard 2.0, чтобы быть совместимым с. NET Framework. Таким образом, моя библиотека классов нацелена на оба.

Вот файл .csproj стандартной библиотеки. NET:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.1;net472</TargetFrameworks>
  </PropertyGroup> 

</Project>

В стандартной библиотеке. NET я создал класс с именем «NetStandardClass». Вот код:

public class NetStandardClass
{
    private string _member;
    public NetStandardClass(string member)
    {
        _member = member;
    }
}

Я создал приложение WinForms, предназначенное для NET Framework 4.7.2. и ссылается на. NET Стандартную библиотеку. Я создал 2 формы: BaseForm, которая создает экземпляр NetStandardClass и Form1, производную от BaseForm.

Вот код BaseForm:

public partial class BaseForm : Form
{
    public BaseForm()
    {
        InitializeComponent();

        var netStandardObject = new NetStandardClass("Test");
    }
}

Вот код формы Form1:

public partial class Form1 : BaseForm
{
    public Form1()
    {
        InitializeComponent();
    }
}

Все компилируется и работает без ошибок. Форма 1 показывает без ошибок. Я могу загрузить BaseForm в конструктор без проблем.

Однако, когда я пытаюсь загрузить Form1 в конструктор, я получаю следующую ошибку:

Невозможно загрузить файл или сборку 'netstandard, Версия = 2.1.0.0, Культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51 'или одна из ее зависимостей. Система не может найти указанный файл.

Что я делаю не так?

1 Ответ

0 голосов
/ 04 апреля 2020

Шон Скелли решил проблему. Чтобы все работало, файл .csproj должен выглядеть так:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net472;netstandard2.1</TargetFrameworks>
  </PropertyGroup>

</Project>

Я также подтвердил, что. NET Standard и. NET Основные приложения и библиотеки совместимы с этим файлом .csproj.

...