winforms 命名空间www.example.com中不存在“Forms”system.windows

pb3skfrl  于 2023-02-13  发布在  Windows
关注(0)|答案(7)|浏览(220)

我刚刚开始工作的c#,并与一些代码样本,我得到了一些论坛摆弄。
这段代码使用了一个命名空间using system.windows.forms,我得到了一个错误:
命名空间system.windows中不存在窗体。
此外,我得到了一些与senddownsendup的未定义函数有关的错误,我相信这些函数位于Forms名称空间中。
我使用的是visual studio 10(带有.net frame work 4. 0)。知道如何修复这个错误吗?

htrmnn0y

htrmnn0y1#

在解决方案树中展开项目,右键单击ReferencesAdd Reference,在Framework选项卡上选择System.Windows.Forms
有时需要添加对某些非默认程序集的引用。

来自评论:对于寻找VS 2019+的人:现在添加项目引用是右键单击Solution Explorer中的Dependencies

对于寻找VS代码的人:How do I add assembly references in Visual Studio Code

s4chpxco

s4chpxco2#

如果有人在尝试在.NET Core 3+ WPF应用中引用 Windows Forms 组件时遇到此错误(实际上并不罕见),解决方案是进入.csproj文件(在VS2019中双击它)并将其添加到包含目标框架的属性组节点。

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

epggiuax3#

如果您正在**.Net Core应用程序中编写Windows窗体**代码,则很可能会遇到此错误:
错误CS0234命名空间“System.Windows”中不存在类型或命名空间名称“Forms”(是否缺少程序集引用?)
如果您使用的是Sdk样式的项目文件(推荐使用),您的 *.csproj文件应该类似于:

<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>

请特别注意以下几行:

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

请注意,如果在引用某些WinForms库时使用WPF,则还应添加<UseWPF>true</UseWPF>
提示:自**.NET 5.0**起,Microsoft建议参考SDK Microsoft.Net.Sdk,而不是Microsoft.Net.Sdk.WindowsDesktop

5ssjco0h

5ssjco0h4#

净值〉= 5

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

引用Announcing .NET 5.0
Windows桌面API(包括Windows窗体、WPF和WinRT)仅在以net5.0-windows为目标时可用。您可以指定操作系统版本,如net5.0-windows7或net5.0-windows10.0.17763.0(适用于Windows 2018年10月更新)。如果要使用WinRT API,您需要以Windows 10版本为目标。
在您的项目中:

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

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

</Project>

同样有趣的是:

  • net5.0是. NET 5.0的新目标框架标记(TFM)。
  • net5.0结合并取代了netcoreapp和netstandard TFM。
  • net5.0支持. NET框架兼容模式
      • net5.0-windows将用于公开Windows特定功能,包括Windows窗体、WPF和WinRT API。**
    • . NET 6.0将使用与net6.0相同的方法,并将添加net6.0-ios和net6.0-android。*
  • 特定于操作系统的TFM可以包括操作系统版本号,如net6.0-ios14。
  • 可移植的API,如ASP.NET核心将可用于net5.0。同样的,Xamarin表单也可用于net6.0。
vhmi4jdf

vhmi4jdf5#

如果您在一个解决方案中有多个项目,并且其中一个项目实际上位于解决方案文件夹中,则可能会遇到此问题。我通过右键单击解决方案树中的此文件夹-〉然后按“从项目中排除”解决了此问题。

f8rj6qna

f8rj6qna6#

对于一些只需要结构和WindowsForm命名空间中的一些函数的人,你只需要改变项目的旧行为。
使DisableWinExeOutputInference为true,则输出类型不会被Visual Studio重写:D。
不要忘记将添加窗口设置到TargetFramework

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

在这里我找到了他们https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/5.0/sdk-and-target-framework-change

nnsrf1az

nnsrf1az7#

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?

相关问题