For Those using Visual Studio 2022 with .Net Core 6.0
Sorry to revive this thread, but I created an account just to do so, as none of the solutions I found searching google for days worked for me alone, and seemed to only bring up only outdated tutorials.
Not Working =(
What DID work for me
- Double click your project (opening the csproj editor window)
Add the following lines (replacing the existing TargetFramework line):
<TargetFramework>net6.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
My window, for referrence, looks like:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
- Note Both lines! I read several solutions / videos that stopped simply after adding the «UseWindowsForms» tag, which did not solve the problem for me, even after unloading and reloading/closing and opening etc.
I stumbled on this solution after applying the «UseWindowsForms» tag, and then in desperation changing my NET framework in properties to 5.0, which caused it to work, and then noted when changing back to 6.0 it still worked.
If you forget the Framework tag in the future, you can reproduce the effect just by flipping your properties back and forth…
-
Right click the project, and go to properties.
-
Change the Target framework from .NET 6.0…to….NET 5.0
-
Exit back to your code. Which after a few moments will show the System.Windows.Forms connecting properly.
-
Open back up properties.
-
Change the Target framework from .Net 5.0, back to .Net 6.0
Congratulations
You have (or at least I have) a .Net 6.0 project that is properly allowing me to use System.Windows.Forms (Including the Clipboard, which I suspect many here are looking for…).
I did due diligence on this, testing it multiple times across multiple projects, and it (at least for my setup) consistently works!
BTW. For those wondering. the [STAThread] Attribute tag seen in the pictures is needed to allow the Clipboard class to function. (this is also why I am not using top level statements in the example, but if you don’t need that Class, the example works with top level statements (I needed it to show my Clipboard test….)
I’ve been using Powershell and want to start using C#. My plan is to start by converting some powershell code to C#. The first thing I am trying is a file dialog box. Simple I thought.
Powershell(which works):
$fd = New-Object system.windows.forms.openfiledialog
I tried various things in C# but it seems to come down to :
using System.Windows.Forms; //»Forms» underlines red in Visual Studio 2017
Compiler message :
The type or namespace name ‘Forms’ does not exist in the namespace ‘System.Windows’ (are you missing an assembly reference?)
Do I have version issues and how might I fix?
Here is «About» for Visual Studio
Microsoft Visual Studio Community 2017
Version 15.9.4
VisualStudio.15.Release/15.9.4+28307.222
Microsoft .NET Framework
Version 4.8.03752
Installed Version: Community
Application Insights Tools for Visual Studio Package 8.14.11009.1
Application Insights Tools for Visual Studio
ASP.NET and Web Tools 2017 15.9.04012.0
ASP.NET and Web Tools 2017
ASP.NET Core Razor Language Services 15.8.31590
Provides languages services for ASP.NET Core Razor.
ASP.NET Web Frameworks and Tools 2017 5.2.60913.0
For additional information, visit https://www.asp.net/
Azure App Service Tools v3.0.0 15.9.03024.0
Azure App Service Tools v3.0.0
Azure Functions and Web Jobs Tools 15.9.02046.0
Azure Functions and Web Jobs Tools
C# Tools 2.10.0-beta2-63501-03+b9fb1610c87cccc8ceb74a770dba261a58e39c4a
C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Common Azure Tools 1.10
Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.
JavaScript Language Service 2.0
JavaScript Language Service
Microsoft Azure Tools 2.9
Microsoft Azure Tools for Microsoft Visual Studio 2017 — v2.9.10730.2
Microsoft Continuous Delivery Tools for Visual Studio 0.4
Simplifying the configuration of Azure DevOps pipelines from within the Visual Studio IDE.
Microsoft JVM Debugger 1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft Library Manager 1.0
Install client-side libraries easily to any web project
Microsoft MI-Based Debugger 1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Microsoft Visual Studio Tools for Containers 1.1
Develop, run, validate your ASP.NET Core applications in the target environment. F5 your application directly into a container with debugging, or CTRL + F5 to edit & refresh your app without having to rebuild the container.
NuGet Package Manager 4.6.0
NuGet Package Manager in Visual Studio. For more information about NuGet, visit http://docs.nuget.org/.
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
ResourcePackage Extension 1.0
ResourcePackage Visual Studio Extension Detailed Info
ResourcePackage Extension 1.0
ResourcePackage Visual Studio Extension Detailed Info
SQL Server Data Tools 15.1.61810.11040
Microsoft SQL Server Data Tools
TypeScript Tools 15.9.20918.2001
TypeScript Tools for Microsoft Visual Studio
Visual Basic Tools 2.10.0-beta2-63501-03+b9fb1610c87cccc8ceb74a770dba261a58e39c4a
Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Visual F# Tools 10.2 for F# 4.5 15.8.0.0. Commit Hash: 6e26c5bacc8c4201e962f5bdde0a177f82f88691.
Microsoft Visual F# Tools 10.2 for F# 4.5
Visual Studio Code Debug Adapter Host Package 1.0
Interop layer for hosting Visual Studio Code debug adapters in Visual Studio
Visual Studio Tools for Containers 1.0
Visual Studio Tools for Containers
Thanks
COM->System.Windows.Forms
это не COM
.net Core, Visual Studio 2019, создаю проект в консоли(так ведь можно)
можно, но только когда вы знаете что делать дальше. а сейчас очевидно что не знаете:
— в .net Core формы поддерживатся с версии самой корки 3.*
— .net Core 3.* поддерживается начиная с Visual Studio 2019 (и то начиная со свежих билдов, осенних)
— визуального редактора форм на данный момент не существует
— есть руководство https://docs.microsoft.com/ru-ru/dotnet/core/porti… (что подключать там тоже написано)
совет — если вы только начинаете изучать программирование, не готовы осваивать XAML и нуждаете в визуальном редакторе форм, практикуйтесь сначала в .Net Framework, и используйте шаблон проекта WinForms
Вам нужно добавить ссылку на зависимость в свойствах проекта в обозревателе решений. Конечно, если проект не выполняется на .NET Core, в таком случае вам нужно подключить соответсвующее расширение с помощбю менеджера пакетов Nuget для проекта
microsoft visual studio 2022
Проект Библиотека классов .NET 7
пкм по проекту (или зависимости) выбираем: Добавить => Ссылка на проект => Кликаем обзор =>
Отрывается окно => Переходим по структуре файлов вверх до папки «2022» =>
В поле поиска вставляем «System.Windows.Forms» => В результате ищем нужное (Примерно 3 снизу) =>
Выбираем => Тыкаем Добавить.
В свойствах проекта добавляем поддержку Windows Worms (если WPF).
Готово!
C:Program FilesMicrosoft Visual Studio2022CommunitydotnetruntimesharedMicrosoft.WindowsDesktop.App6.0.14System.Windows.Forms.dll
2 / 1 / 1 Регистрация: 02.07.2018 Сообщений: 49 |
|
1 |
|
11.08.2019, 20:33. Показов 8001. Ответов 4
Я обнаружил что у меня отсутствует пространство имен System.Windows.Forms. Просьба подсказать, что делать.
0 |
Заблокирован |
||||
11.08.2019, 20:49 |
2 |
|||
не помогает? в обозревателе решений ссылки проверить
0 |
2 / 1 / 1 Регистрация: 02.07.2018 Сообщений: 49 |
|
11.08.2019, 21:06 [ТС] |
3 |
Проверил, там такой ссылки действительно нет. Добавлено через 12 минут
0 |
Заблокирован |
|
11.08.2019, 22:07 |
4 |
РешениеПКМ Ссылки/Добавить ссылку/.NET/System.Windows.Forms
1 |
Happyness 0 / 0 / 0 Регистрация: 25.10.2018 Сообщений: 4 |
||||
19.07.2021, 15:45 |
5 |
|||
Проблема бывает, когда пишем свою dll.
0 |
компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 07:18 | ||
Оценка: |
Коллеги, подскажите, плиз!
Изучаю .NET. Попробовал в программке на С# выдать элементарный MessageBox.
Написал так:
using System.Windows.Forms;
......
......
MessageBox.Show("Привет!");
или вот так:
System.Windows.Forms.MessageBox.Show("Привет!");
При компиляции получаю сообщение:
The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
Что за лажа?
Re: компилятор ругается на System.Windows.Forms;
|
От: |
Jenyay |
http://jenyay.net |
Дата: | 11.07.05 07:23 | ||
Оценка: |
Здравствуйте, <Аноним>, Вы писали:
А>При компиляции получаю сообщение:
А>The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
А System.Windows.Forms.dll подключил?
… << RSDN@Home 1.1.4 beta 7 rev. 0>>
Re[2]: компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 07:28 | ||
Оценка: |
Здравствуйте, Jenyay, Вы писали:
J>Здравствуйте, <Аноним>, Вы писали:
А>>При компиляции получаю сообщение:
А>>The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
J>А System.Windows.Forms.dll подключил?
Нет. А что — надо для каждого using’а явно подключать dll
Re[2]: компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 07:31 | ||
Оценка: |
Здравствуйте, Jenyay, Вы писали:
J>Здравствуйте, <Аноним>, Вы писали:
А>>При компиляции получаю сообщение:
А>>The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
J>А System.Windows.Forms.dll подключил?
А на кой тогда ключевое слово using, если компилятору надо объяснять, где брать стандартные библиотеки?!
Re[2]: компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 07:40 | ||
Оценка: |
Здравствуйте, Jenyay, Вы писали:
J>Здравствуйте, <Аноним>, Вы писали:
А>>При компиляции получаю сообщение:
А>>The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
J>А System.Windows.Forms.dll подключил?
Аууу!?
Объясните дураку, когда компилятор хавает using без подключения dll, а когда нет?!
В java всегда достаточно написать #import (аналог С#-го usinga)…
Re[3]: компилятор ругается на System.Windows.Forms;
|
От: |
_FRED_ |
@ViIvanov |
Дата: | 11.07.05 07:43 | ||
Оценка: |
Здравствуйте, <Аноним>, Вы писали:
А>>>При компиляции получаю сообщение:
А>>>The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
J>>А System.Windows.Forms.dll подключил?
А>Нет. А что — надо для каждого using’а явно подключать dll
Не для каждого «каждого using’а», а для каждого класса надо найти в МСДН (или другой документации) его описание и посмотреть секцию «Requirements» (в самом низу страницы, например здесь) — из неё можно узнать пространство имён, которое надо указать перед использованием класса («Namespace») и сборку, которую надо подключить к проекту («Assembly») если она ещё не подключена.
В одной сборке могут быть классы из нескольких пространств имён (System.Uri и System.Net.Sockets.TcpClient в System.dll), так же как и классы из разных сборок могут быть в одном пространстве имён (System.Uri в System.dll и System.Int32 в mscorlib.dll).
<< RSDN@Home 1.1.4 beta 7 rev. 500 >> =11:43= [Windows XP — 5.1.2600.0]
under «*none*»
Help will always be given at Hogwarts to those who ask for it.
Re[3]: компилятор ругается на System.Windows.Forms;
|
От: |
Oyster |
https://github.com/devoyster |
Дата: | 11.07.05 07:44 | ||
Оценка: |
Здравствуйте, <Аноним>, Вы писали:
А>Объясните дураку, когда компилятор хавает using без подключения dll, а когда нет?!
А>В java всегда достаточно написать #import (аналог С#-го usinga)…
В .NET всегда надо явно добавлять в references используемые сборки. Класс MessageBox находится в сборке System.Windows.Forms, поэтому эту сборку надо явно добавить в references.
Re: компилятор ругается на System.Windows.Forms;
|
От: |
nzeemin |
http://nzeemin.livejournal.com/ |
Дата: | 11.07.05 07:45 | ||
Оценка: |
Здравствуйте, <Аноним>, Вы писали:
А>При компиляции получаю сообщение:
А>The type or namespace name ‘Windows’ does not exist in the class or namespace ‘System’ (are you missing an assembly reference?)
Вероятно, вы не добавили эту библиотеку в References проекта. using лишь указывает, что в данном файле используются объявления из этой библиотеки…
Создавайте проект через File|New|Project, Windows Application — все необходимые библиотеки будут сразу подключены в References.
Re[4]: компилятор ругается на System.Windows.Forms;
|
От: |
Аноним
|
|
Дата: | 11.07.05 07:55 | ||
Оценка: |
Здравствуйте, Oyster, Вы писали:
O>Здравствуйте, <Аноним>, Вы писали:
А>>Объясните дураку, когда компилятор хавает using без подключения dll, а когда нет?!
А>>В java всегда достаточно написать #import (аналог С#-го usinga)…
O>В .NET всегда надо явно добавлять в references используемые сборки. Класс MessageBox находится в сборке System.Windows.Forms, поэтому эту сборку надо явно добавить в references.
ВСЕГДА???
Я уже не первый день пробую писать всякие тестовые приложеньица на С# (например, использовал System.Collections — и ничего, кроме using’а компилятору не «объяснял») — и только первый раз наткнулся на необходимость явно делать Reference…
Re[4]: компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 08:03 | ||
Оценка: |
Здравствуйте, Oyster, Вы писали:
O>Здравствуйте, <Аноним>, Вы писали:
А>>Объясните дураку, когда компилятор хавает using без подключения dll, а когда нет?!
А>>В java всегда достаточно написать #import (аналог С#-го usinga)…
O>В .NET всегда надо явно добавлять в references используемые сборки. Класс MessageBox находится в сборке System.Windows.Forms, поэтому эту сборку надо явно добавить в references.
«Самые стандартные» классы компилятор хавает по умолчанию?
Re[5]: компилятор ругается на System.Windows.Forms;
|
От: |
Oyster |
https://github.com/devoyster |
Дата: | 11.07.05 08:09 | ||
Оценка: |
Здравствуйте, <Аноним>, Вы писали:
O>>В .NET всегда надо явно добавлять в references используемые сборки. Класс MessageBox находится в сборке System.Windows.Forms, поэтому эту сборку надо явно добавить в references.
А>»Самые стандартные» классы компилятор хавает по умолчанию?
Нет, просто некоторые сборки включаются в проект по умолчанию. Например, всегда подключается сборка mscorlib (даже если её нет в references), по умолчанию в VS.NET 2003 в references добавляются System, System.Data, System.Xml.
Re[4]: компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 08:10 | ||
Оценка: |
_FR>Не для каждого «каждого using’а», а для каждого класса надо найти в МСДН (или другой документации) его описание и посмотреть секцию «Requirements» (в самом низу страницы, например здесь) — из неё можно узнать пространство имён, которое надо указать перед использованием класса («Namespace») и сборку, которую надо подключить к проекту («Assembly») если она ещё не подключена.
_FR>В одной сборке могут быть классы из нескольких пространств имён (System.Uri и System.Net.Sockets.TcpClient в System.dll), так же как и классы из разных сборок могут быть в одном пространстве имён (System.Uri в System.dll и System.Int32 в mscorlib.dll).
СЕНК! Чисто конкретный ответ — по-програмерски!!! Ато начитают деепричастными оборотами сыпать…
Re[6]: компилятор ругается на System.Windows.Forms;
|
От: | Аноним | |
Дата: | 11.07.05 08:12 | ||
Оценка: |
Здравствуйте, Oyster, Вы писали:
O>Здравствуйте, <Аноним>, Вы писали:
O>>>В .NET всегда надо явно добавлять в references используемые сборки. Класс MessageBox находится в сборке System.Windows.Forms, поэтому эту сборку надо явно добавить в references.
А>>»Самые стандартные» классы компилятор хавает по умолчанию?
O>Нет, просто некоторые сборки включаются в проект по умолчанию. Например, всегда подключается сборка mscorlib (даже если её нет в references), по умолчанию в VS.NET 2003 в references добавляются System, System.Data, System.Xml.
СЕНКАЮ! Въехал.
Re[3]: компилятор ругается на System.Windows.Forms;
|
От: |
SiAVoL |
|
Дата: | 11.07.05 08:36 | ||
Оценка: |
Здравствуйте, <Аноним>, Вы писали:
А>А на кой тогда ключевое слово using, если компилятору надо объяснять, где брать стандартные библиотеки?!
using System.Windows.Forms;
Так вот, этой строкой никаких дополнительных сборок не подключается. Вообще говоря, физически пространств имен в .NET не существует
Строка просто указывает в каких пространствах имен следует искать класс, который в коде указан коротким именем (System.Windows.Forms.MessageBox — полное имя класса, а MessageBox — короткое). Т.о. это избавляет нас от необходимости писать везде System.Windows.Forms.MessageBox.Show(«Привет!»)
, вместо короткого варианта MessageBox.Show(«Привет!»)
Т.е. using это просто синтаксический сахар, позволяющий меньше стучать по клавиатуре и получать более удобочитаемый код, не более того.
… << RSDN@Home 1.1.4 beta 7 rev. 501>>
Re[3]: компилятор ругается на System.Windows.Forms;
|
От: |
misha_sk |
|
Дата: | 11.07.05 09:13 | ||
Оценка: |
А>Объясните дураку, когда компилятор хавает using без подключения dll, а когда нет?!
А>В java всегда достаточно написать #import (аналог С#-го usinga)…
В Java для поиска физического размещения классов используется переменная окружения CLASSPATH. Правда там идет смешенивание физического размшения и логического, в виду необходимости структурирования пакетов по каталогам файловой системы.
- Переместить
- Удалить
- Выделить ветку
Пока на собственное сообщение не было ответов, его можно удалить.