c#,'Forms'在命名空间system.windows中不存在

Joh*_*ith 57 c# winforms

我刚刚开始研究c#,并且正在摆弄一些我从某个论坛获得的代码示例.

此代码使用的命名空间using system.windows.forms我收到错误:senddown.我也是收到有关未定义功能的一些错误sendupForms我认为是在using system.windows.forms名字空间.

我正在使用visual studio 10(使用.net框架工作4.0).知道如何修复此错误吗?

谢谢.

VMA*_*Atm 116

展开解决方案树项目,right clickReferences,Add Reference中,选择System.Windows.FormsFramework选项卡.

您有时需要添加对某些非默认程序集的引用.

  • 好的,有效.我的印象是我已经添加了它.刚检查一遍,正如预期的那样,它已经丢失了.谢谢 :) (2认同)
  • 右键单击项目下的 **References** 节点。 (2认同)
  • 针对寻找 VS 2019 的人员的更新 - 现在添加项目引用只需右键单击解决方案资源管理器中的“依赖项”。 (2认同)

joo*_*ool 47

如果有人在尝试引用 .NET Core 3+ WPF 应用程序中的 Windows 窗体组件时遇到此错误(这实际上并不少见)。解决办法是进入.csproj文件(在VS2019中双击),将其添加到包含目标框架的属性组节点。像这样:

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • 这正是对我有用的解决方案。我看到的许多提议的解决方案都建议添加对“System.Window.Forms”的引用,但该提议对我来说从未奏效。我能够添加该引用并解决我丢失的 Forms 类,但是通过添加该引用,它破坏了“System.Window” (4认同)

Biz*_*han 16

如果您在.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>
Run Code Online (Sandbox Code Playgroud)

请特别注意以下几行:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<OutputType>WinExe</OutputType>
<UseWindowsForms>true</UseWindowsForms>
<PackageReference Include="Microsoft.Windows.Compatibility" Version="3.0.0" />
Run Code Online (Sandbox Code Playgroud)

请注意,如果您在引用某些 WinForms 库时使用 WPF,您也应该添加<UseWPF>true</UseWPF>

提示:从.NET 5.0 开始,Microsoft 建议使用 SDKMicrosoft.Net.Sdk代替Microsoft.Net.Sdk.WindowsDesktop.


dan*_*era 14

净值 >= 5

<TargetFramework>
   net5.0-windows
</TargetFramework>
Run Code Online (Sandbox Code Playgroud)

引用.NET 5.0 的发布

Windows 桌面 API(包括 Windows Forms、WPF 和 WinRT)仅在面向 net5.0-windows 时可用。您可以指定操作系统版本,例如 net5.0-windows7 或 net5.0-windows10.0.17763.0(适用于 Windows October 2018 Update)。如果要使用 WinRT API,则需要以 Windows 10 版本为目标。

在你的项目中:

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

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

</Project>
Run Code Online (Sandbox Code Playgroud)

同样有趣的是:

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