The type or namespace name forms does not exist in the namespace system windows

I have just started working on c#, and was fiddling with some code sample that I got from some forum.

This code is using a namespace using system.windows.forms for which I am getting an error:

Forms does not exist in the namespace system.windows.

Also I am getting some error related to undefined functions for senddown & sendup which I believe to be in the Forms name space.

I am using visual studio 10 (with .net frame work 4.0). Any idea how to fix this error?

Uwe Keim's user avatar

Uwe Keim

39.7k57 gold badges175 silver badges291 bronze badges

asked Jul 10, 2011 at 5:47

John Smith's user avatar

6

Expand the project in Solution Tree, Right-Click on References, Add Reference, Select System.Windows.Forms on Framework tab.

You need to add reference to some non-default assemblies sometimes.

From comments: for people looking for VS 2019+: Now adding project references is Right-Click on Dependencies in Solution Explorer.

For people looking for VS Code: How do I add assembly references in Visual Studio Code

answered Jul 10, 2011 at 5:50

VMAtm's user avatar

VMAtmVMAtm

28k17 gold badges79 silver badges125 bronze badges

10

In case someone runs into this error when trying to reference Windows Forms components in a .NET Core 3+ WPF app (which is actually not uncommon), the solution is to go into the .csproj file (double click it in VS2019) and add it to the property group node containing the target frameworks. Like this:

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

Fudge's user avatar

answered Sep 27, 2019 at 7:12

jool's user avatar

jooljool

1,57112 silver badges15 bronze badges

5

If you are writing Windows Forms code in a .Net Core app, then it’s very probable that you run into this error:

Error CS0234 The type or namespace name ‘Forms’ does not exist in the namespace ‘System.Windows’ (are you missing an assembly reference?)

If you are using the Sdk style project file (which is recommended) your *.csproj file should be similar to this:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <OutputType>WinExe</OutputType>
    <UseWindowsForms>true</UseWindowsForms>
    <RootNamespace>MyAppNamespace</RootNamespace>
    <AssemblyName>MyAppName</AssemblyName>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />
  </ItemGroup>
</Project>

Pay extra attention to these lines:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<OutputType>WinExe</OutputType>
<UseWindowsForms>true</UseWindowsForms>
<PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />

Note that if you are using WPF while referencing some WinForms libraries you should add <UseWPF>true</UseWPF> as well.

Hint: Since .NET 5.0, Microsoft recommends to refer to SDK Microsoft.Net.Sdk in lieu of Microsoft.Net.Sdk.WindowsDesktop.

Owlbuster's user avatar

answered Oct 29, 2019 at 12:11

Bizhan's user avatar

BizhanBizhan

16.2k9 gold badges63 silver badges101 bronze badges

Net >= 5

<TargetFramework>
   net5.0-windows
</TargetFramework>

Quoting Announcing .NET 5.0:

Windows desktop APIs (including Windows Forms, WPF, and WinRT) will only be available when targeting net5.0-windows. You can specify an operating system version, like net5.0-windows7 or net5.0-windows10.0.17763.0 ( for Windows October 2018 Update). You need to target a Windows 10 version if you want to use WinRT APIs.

In your project:

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

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

Also interesting:

  • net5.0 is the new Target Framework Moniker (TFM) for .NET 5.0.
  • net5.0 combines and replaces netcoreapp and netstandard TFMs.
  • net5.0 supports .NET Framework compatibility mode
  • net5.0-windows will be used to expose Windows-specific functionality, including Windows Forms, WPF and WinRT APIs.
  • .NET 6.0 will use the same approach, with net6.0, and will add net6.0-ios and net6.0-android.
  • The OS-specific TFMs can include OS version numbers, like net6.0-ios14.
  • Portable APIs, like ASP.NET Core will be usable with net5.0. The same will be true of Xamarin forms with net6.0.

answered Feb 8, 2021 at 8:52

dani herrera's user avatar

dani herreradani herrera

49k9 gold badges118 silver badges178 bronze badges

You may encounter this problem if you have multiple projects inside a solution and one of them is physically located inside solution folder.
I solved this by right click on this folder inside Solution tree -> then pressing «exclude from project»

exclude folder

answered Oct 6, 2020 at 11:26

Skeptik's user avatar

SkeptikSkeptik

491 silver badge4 bronze badges

For some one just need the struct and some function from Windowsform namespace, you just need to change the the project to old behave.

Make DisableWinExeOutputInference true then OutputType dont be override by visual studio :D.

Dont foget set add -windows to TargetFramework

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<DisableWinExeOutputInference>true</DisableWinExeOutputInference>
<UseWindowsForms>true</UseWindowsForms>
<StartupObject></StartupObject>
<ApplicationIcon />
</PropertyGroup>

here where i found them
https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/5.0/sdk-and-target-framework-change

answered Feb 11 at 3:22

noir Kelo's user avatar

browxy.com 
Compilation failed: 1 error(s), 0 warnings
main.cs(7,24): error CS0234: The type or namespace name `Forms' does not exist in the namespace `System.Windows'. Are you missing `System.Windows.Forms' assembly reference?

browxy.com

answered Mar 25, 2021 at 17:03

CS QGB's user avatar

CS QGBCS QGB

2951 gold badge3 silver badges12 bronze badges

1

I have just started working on c#, and was fiddling with some code sample that I got from some forum.

This code is using a namespace using system.windows.forms for which I am getting an error:

Forms does not exist in the namespace system.windows.

Also I am getting some error related to undefined functions for senddown & sendup which I believe to be in the Forms name space.

I am using visual studio 10 (with .net frame work 4.0). Any idea how to fix this error?

Uwe Keim's user avatar

Uwe Keim

39.7k57 gold badges175 silver badges291 bronze badges

asked Jul 10, 2011 at 5:47

John Smith's user avatar

6

Expand the project in Solution Tree, Right-Click on References, Add Reference, Select System.Windows.Forms on Framework tab.

You need to add reference to some non-default assemblies sometimes.

From comments: for people looking for VS 2019+: Now adding project references is Right-Click on Dependencies in Solution Explorer.

For people looking for VS Code: How do I add assembly references in Visual Studio Code

answered Jul 10, 2011 at 5:50

VMAtm's user avatar

VMAtmVMAtm

28k17 gold badges79 silver badges125 bronze badges

10

In case someone runs into this error when trying to reference Windows Forms components in a .NET Core 3+ WPF app (which is actually not uncommon), the solution is to go into the .csproj file (double click it in VS2019) and add it to the property group node containing the target frameworks. Like this:

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

Fudge's user avatar

answered Sep 27, 2019 at 7:12

jool's user avatar

jooljool

1,57112 silver badges15 bronze badges

5

If you are writing Windows Forms code in a .Net Core app, then it’s very probable that you run into this error:

Error CS0234 The type or namespace name ‘Forms’ does not exist in the namespace ‘System.Windows’ (are you missing an assembly reference?)

If you are using the Sdk style project file (which is recommended) your *.csproj file should be similar to this:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <OutputType>WinExe</OutputType>
    <UseWindowsForms>true</UseWindowsForms>
    <RootNamespace>MyAppNamespace</RootNamespace>
    <AssemblyName>MyAppName</AssemblyName>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />
  </ItemGroup>
</Project>

Pay extra attention to these lines:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<OutputType>WinExe</OutputType>
<UseWindowsForms>true</UseWindowsForms>
<PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />

Note that if you are using WPF while referencing some WinForms libraries you should add <UseWPF>true</UseWPF> as well.

Hint: Since .NET 5.0, Microsoft recommends to refer to SDK Microsoft.Net.Sdk in lieu of Microsoft.Net.Sdk.WindowsDesktop.

Owlbuster's user avatar

answered Oct 29, 2019 at 12:11

Bizhan's user avatar

BizhanBizhan

16.2k9 gold badges63 silver badges101 bronze badges

Net >= 5

<TargetFramework>
   net5.0-windows
</TargetFramework>

Quoting Announcing .NET 5.0:

Windows desktop APIs (including Windows Forms, WPF, and WinRT) will only be available when targeting net5.0-windows. You can specify an operating system version, like net5.0-windows7 or net5.0-windows10.0.17763.0 ( for Windows October 2018 Update). You need to target a Windows 10 version if you want to use WinRT APIs.

In your project:

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

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

Also interesting:

  • net5.0 is the new Target Framework Moniker (TFM) for .NET 5.0.
  • net5.0 combines and replaces netcoreapp and netstandard TFMs.
  • net5.0 supports .NET Framework compatibility mode
  • net5.0-windows will be used to expose Windows-specific functionality, including Windows Forms, WPF and WinRT APIs.
  • .NET 6.0 will use the same approach, with net6.0, and will add net6.0-ios and net6.0-android.
  • The OS-specific TFMs can include OS version numbers, like net6.0-ios14.
  • Portable APIs, like ASP.NET Core will be usable with net5.0. The same will be true of Xamarin forms with net6.0.

answered Feb 8, 2021 at 8:52

dani herrera's user avatar

dani herreradani herrera

49k9 gold badges118 silver badges178 bronze badges

You may encounter this problem if you have multiple projects inside a solution and one of them is physically located inside solution folder.
I solved this by right click on this folder inside Solution tree -> then pressing «exclude from project»

exclude folder

answered Oct 6, 2020 at 11:26

Skeptik's user avatar

SkeptikSkeptik

491 silver badge4 bronze badges

For some one just need the struct and some function from Windowsform namespace, you just need to change the the project to old behave.

Make DisableWinExeOutputInference true then OutputType dont be override by visual studio :D.

Dont foget set add -windows to TargetFramework

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<DisableWinExeOutputInference>true</DisableWinExeOutputInference>
<UseWindowsForms>true</UseWindowsForms>
<StartupObject></StartupObject>
<ApplicationIcon />
</PropertyGroup>

here where i found them
https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/5.0/sdk-and-target-framework-change

answered Feb 11 at 3:22

noir Kelo's user avatar

browxy.com 
Compilation failed: 1 error(s), 0 warnings
main.cs(7,24): error CS0234: The type or namespace name `Forms' does not exist in the namespace `System.Windows'. Are you missing `System.Windows.Forms' assembly reference?

browxy.com

answered Mar 25, 2021 at 17:03

CS QGB's user avatar

CS QGBCS QGB

2951 gold badge3 silver badges12 bronze badges

1

  • Remove From My Forums
  • Question

  • I have a WPF application that I want to make use of NotifyIcon which is located in:

    System.Windows.Forms;

    however, after I declare this directive the compiler will throw the following error:


    Error   
    1    The type or namespace name ‘Forms’ does not exist in the namespace
    ‘System.Windows’ (are you missing an assembly reference?)

    I am unsure of what the problem is, as I have the .net framework 3.5.


    Chrystian Vieyra

Answers

  • The reference assemblies that are added by default when creating a WPF application do not include the System.Windows.Forms assembly.  Therefore, to add any classes/types/enums from the System.Windows.Forms namespace, you must add a reference to the System.Windows.Forms assembly.

    If you’re not clear on how to do this, right click the References folder in your project, select Add Reference… and then on the .NET tab, choose System.Windows.Forms and click OK.

    Upon adding this reference, you should be able to access items from the System.Windows.Forms namespace (by including a using statement or a using fully-qualified names).

    Hope this helps!
    Brian


    Brian Schwalm • www.anythinksolutions.com

    • Marked as answer by

      Tuesday, July 15, 2008 9:58 PM

    • Unmarked as answer by
      Chrystian Vieyra
      Tuesday, July 15, 2008 9:58 PM
    • Marked as answer by
      Chrystian Vieyra
      Tuesday, July 15, 2008 9:59 PM

  • VSCode Version: — 0.1.0
    OS Version: elementary OS 0.3.2 Freya (64-bit) (Built on Ubuntu 14.04)
    Steps to Reproduce:
  1. After installing VSCode and Mono 4.2.3 I tried the «helloworld» samples.
  2. When I tried the Winforms sample I got these two error messages.

WinHello.cs(2,22): error CS0234: The type or namespace name Forms' does not exist in the namespaceSystem.Windows’. Are you missing System.Windows.Forms' assembly reference? WinHello.cs(4,27): error CS0246: The type or namespace nameForm’ could not be found. Are you missing an assembly reference?
Compilation failed: 2 error(s), 0 warnings

Here is a link to the sample code that you provided on your website.
http://www.mono-project.com/docs/getting-started/mono-basics/

This is because you don’t have a clue what «using» does, just not yet. You cannot do any development at all without understanding assemblies and their reference. You develop one or more assemblies, and one can be used by another one. You can do it be referencing one assembly by another one, or by dynamically loading another assembly and using reflection to access its types and their members. Dynamic loading is related to advanced techniques, but referencing is the basis of all technology, making it impossible to do anything at all without referencing.

Referencing in Visual Studio is done by «Add Reference» in Solution Explorer. For understanding of referencing, you can start here: https://msdn.microsoft.com/en-us/library/8wxf689z%28v=vs.110%29.aspx[^].

You also need to understand what a modules, and different kinds of reference, importantly, GAC and signing, and, hence, the idea open-key cryptography. Please, find it all by yourself before asking further question.

As the «using» directive (not to be mixed up with «using» statement), they merely help to shorten the names of the assembly-level type names. You are not obliged to use «using» at all, can just use full type names in all cases. This is nothing but syntactic sugar. You just need to understand namespaces: https://msdn.microsoft.com/en-us/library/0d941h9d.aspx[^].

—SA a**hole

  • The thing не запускается на windows 10
  • The sims freeplay для windows 8
  • The theory of broken windows
  • The following options automate the configuration of some additional settings in windows перевод
  • The system seems to lack either network cards or network drivers как решить windows 10