Есть ли способ конвертировать мое консольное приложение в приложение Windows Forms в C #? - PullRequest
6 голосов
/ 03 марта 2010

Я создал консольное приложение, но хочу превратить его в приложение Windows Form.

Я нашел Это , и оно оказалось тем, что мне нужно, но я получил сообщение об ошибке при попытке использовать System.Windows.Forms;

Это сообщение об ошибке, которое я получил:

Ошибка 1 Тип или имя пространства имен «Windows» не существует в пространстве имен «Система» (отсутствует ссылка на сборку?)

Есть еще один шаг, или он как-то отличается в VS 2008?

Ответы [ 4 ]

12 голосов
/ 03 марта 2010

Вам нужно добавить ссылку на сборку WinForms

  • Щелкните правой кнопкой мыши по решению и выберите «Добавить ссылку»
  • Выберите System.Windows.Forms и нажмите ОК

Возможно, вам потребуется сделать то же самое для System.Data, в зависимости от настроек вашего проекта

3 голосов
/ 03 марта 2010

Убедитесь, что вы добавили сборку System.Windows.Forms в ваши ссылки на проект. В обозревателе решений щелкните правой кнопкой мыши «Ссылки», а затем на вкладке .NET найдите сборку System.Windows.Forms и добавьте ее.

2 голосов
/ 03 марта 2010

Вам необходимо добавить ссылку на System.Windows.Forms. Щелкните правой кнопкой мыши свой проект и выберите Добавить ссылку.

На вкладке .NET выберите ранее упомянутую ссылку.

0 голосов
/ 09 февраля 2019

Самый простой способ:

Начиная с .Net Core 3, самый простой способ сделать это - сделать резервную копию Program.cs где-нибудь на диске (или просто с помощью git) и выполнить следующую команду, где находится Program.cs:

dotnet new winforms --force

Он заменит ваши Program.cs и .csproj. Затем просто скопируйте необходимый код из вашего старого Program.cs. Вот и все!

Для конвертации проекта вручную это может быть полезно:

Вот как выглядит проект .Net Core 3 (сгенерированный с использованием dotnet new winforms):

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

<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

Вот как Program.cs выглядит для нового проекта:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LinkInterceptor
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
...