Как правильно ссылаться на пакет NuGet .NET standard 2.0 в проекте winforms .NET framework 4.8?
Всем привет,
У меня была библиотека .Net Standard 2.1, на которую я пытался ссылаться в приложении WinForms .Net Framework 4.8, но обнаружил, что она не работает .Net Standard 2.1 и .Net Framework 4.8 несовместимы..
Итак, я изменил библиотеку классов на ссылку .Net Standard 2.0 и заново построил и перенес dll-файл release в приложение winforms,
Но я получил следующее исключение:
Цитата:System.IO.FileNotFoundException: 'не удалось загрузить файл или сборку 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' или одну из его зависимостей. Система не может найти указанный файл.'
Внутреннее Исключение:
FileNotFoundException: не удалось загрузить файл или сборку 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' или одну из его зависимостей. Система не может найти указанный файл.
Я создал NuGet-пакет от .Net standard class library, и использовал его в другом проекте WPF (.Net Framework 4.8), и он работал нормально,
Я использовал его в новом проекте winforms (.Net Framework 4.8), и он отлично работал,
Я удалил ссылку на него .dll-файл из оригинального проекта winforms и использовал вместо него пакет nuget, но получил то же исключение..
Поэтому я предполагаю, что использование ссылки .Net Standard 2.1 сначала каким-то образом повредило проект, поэтому при попытке использовать пакет NuGet .Net Standard 2.0 я получаю исключение, несмотря на отсутствие ссылки .Чистый Стандарт 2.1
Итак, как я могу найти, где находится ссылка на .Net Standard 2.1?
и как я могу решить это исключение?
Что я уже пробовал:
1. Выгрузил проект и проверив материалы vbproj поиск .Чистый стандарт 2.1 ссылкой, не нашел..
2. от отчаяния я обыскал весь проект в поисках "2.1", надеясь найти, где находится эта ссылка, но безрезультатно.
3. Googled, вопрос не является проблемой с .Net Standard, речь идет об этой конкретной ситуации, я просто не знаю, как исследовать дальше.
4. ГИТ сброс -- жесткий фиксация перед добавлением в версии 2.1, потом добавил версию 2.0.. все то же исключение..
Sandeep Mewara
1. удалили папки bin &obj?
2. удалил старый 2.1 nuget загруженный, который мог бы сидеть в вашей системе?
Ahmad_kelany
1. Да, я сделал ... то же самое исключение.
2. 2.1 был dll-файлом, а не nuget, пакет nuget-это 2.0 с самого начала, и я удалил его .DLL-файл.
Gerry Schmitz
Попробуйте это сделать с новым "минимальным" проектом Windows Forms VS.
WPF, Windows Forms, UWP, различные фреймворки - все это "незавершенные работы", и не всегда / никогда они синхронизированы.
(И причина, по которой вы используете последнюю версию everything, заключается в том, что вам нужны эти функции, а не просто "потому что"; если вы хотите стабильности)
Ahmad_kelany
Я попробовал его с полным проектом WPF и с новым проектом Winforms, и он отлично работал в обоих случаях, как я уже говорил в вопросе,
Как я уже сказал, вероятно, проблема не в самих фреймворках, а в конкретной ситуации проекта,
И я полностью согласен с вашей последней строкой, я использовал стандарт 2.1 для определенной функции, но так как он был несовместим с фреймворком 4.8, я отказался от этой функции и вернулся к 2.0..
Мой главный вопрос заключается в том, как исследовать это исключение и что его вызывает..
Gerry Schmitz
Проблема, по-видимому, заключается в том, что вы пытаетесь использовать "пакет Nuget" (для своей библиотеки dll) вместо того, чтобы просто ссылаться на свою библиотеку dll. Казалось бы, вам нужно посмотреть на подобные пакеты Nuget и выяснить, почему ваш не работает.
Ahmad_kelany
Сэр,
В третьей строке моего вопроса я сказал, что ссылаюсь на .dll-файл, созданный по стандарту 2.0, и я все еще получил исключение,
Я пытался использовать пакет Nuegt просто пытался использовать другой подход, чтобы избежать исключения, а не использовать его "просто потому" ..
И.dll-файл и пакет Nuget прекрасно работают в других проектах, будь то WPF или winForms,
Так что ясно, что вопрос не в этом .dll файл или в пакете Nuget,
Как я уже сказал, в проектной ситуации есть проблема, и я пытаюсь понять, почему она дает мне это исключение, несмотря на то, что пакет ссылается на стандарт 2.0, а не на 2.1?
Обратите внимание, что исключение говорит, что оно не может найти стандарт 2.1, но внутреннее исключение говорит, что оно не может найти стандарт 2.0..
Воистину, мне кажется, что я что-то упускаю, но я все еще не знаю, что именно? или как расследовать дальше ... 😅
Gerry Schmitz
То, что вы думаете, что вы сказали, и то, что вы сказали, - это две разные вещи: "я попробовал это с полным проектом WPF и с новым проектом Winforms, и это прекрасно работало в обоих случаях"
Ваша "проблема" заключается в том, что вы намерены спасти поврежденный проект, когда вы можете просто скопировать свои компоненты в тот, который работает (как вы "сказали" выше).
Я использую библиотеку dll .NET Standard 2.0 с приложениями Core 3.0, Framework 4.7, WPF и UWP store. Без проблем. Никаких Форм Windows. Нет NuGet Для.
Florian2C
У меня есть та же проблема, и я не нахожу решения после нескольких часов исследований.
Вы нашли какое-нибудь решение?
Florian2C
Единственный способ, который я нашел сейчас, - это создать новый проект и импортировать в него все формы.