Конвертировать.Net Core в.Net Framework

У меня есть веб-проект проекта.Net Core, и по разным причинам я хочу преобразовать его в проект.Net Framework.

Есть ли простой способ сделать это, или мне нужно начать заново и импортировать код из предыдущих проектов

11 ответов

Я загрузил основной проект в VS 2017 RC Community и открыл *.csproj в текстовом редакторе.

Просто удали тег

<RuntimeFrameworkVersion>

и заменить

<TargetFramework>netcoreapp1.1</TargetFramework>

в

<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>

А ведь в свойствах проекта установите любой другой фреймворк и сбросьте обратно (VS перезагрузить и восстановить файл *.csproj).

Это работало для меня в VS2017:

Начните с основного веб-проекта.net.

Отредактируйте *.csproj так, чтобы это выглядело так:

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

  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.RazorPages" Version="2.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
  </ItemGroup>

</Project>

Сохрани и закрой.

Попробуйте запустить проект.

PackReferences - это просто файлы NuGet, и вы можете добавить их через графический интерфейс, если версии отличаются от моих выше.

Здесь много похожих ответов, но я не увидел ни одного, который был бы вполне подходящим, поэтому я бы хотел оставить это здесь на всякий случай, если кто-то еще в той же обуви.

Просто чтобы прояснить, мой проект был консольной программой. Так что, если вы пытаетесь использовать этот ответ для чего-то другого, ваш пробег может отличаться.

В вашем .csproj файл, внутри <PropertyGroup></PropertyGroup> пометить, изменить <TargetFramework> отразить следующее:

<TargetFramework>net461</TargetFramework>

Теперь в этом примере я использовал v4.6.1. Я могу только предположить, что вы включите свою версию за словом "net", без точек. Удачи!

Ни один из ответов здесь не работал для меня. В.Net Core 2 файл project.json больше не существует. Тем не менее, я решил эту проблему, используя следующие шаги.

1) Я удалил все пакеты nuget из моего существующего проекта.

2) Я создал отдельный проект основного веб-приложения.net, ориентированный на.net 4.61. Это должно было получить пакеты nuget по умолчанию.

3) Я отредактировал файл временного проекта.csproj, скопировал все узлы PackageReference внутри ItemGroup и вставил их в файл существующих проектов.csproj.

4) Отредактировал узел TargetFramework (внутри PropertyGroup) с "netstandard2" до "net461"

У меня было несколько изменений пакета, чтобы отследить и решить, но в остальном я смог запустить.

Я сделал это, и это сработало

удалять

"Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    }

из проекта.

затем замените часть фреймворков следующим образом:

 "frameworks": {
    "net46": { }
  },

затем восстановите пакеты.

РЕДАКТИРОВАТЬ: Это устарело сейчас.

В моей версии Visual Studio 2017 (15.6.2) после "Выгрузки проекта" щелкните правой кнопкой мыши и выберите "Изменить". <your project file>, Мне пришлось:

  1. Добавьте узел:

    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>

  2. Удалить узлы:

    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>

    <TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.16299.0</TargetPlatformVersion>

    <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>

    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Есть несколько шагов, которые вам нужно сделать, чтобы достичь этого.

  1. Сначала щелкните правой кнопкой мыши на файле.csproj и добавьте следующее

   <TargetFrameworks>netstandard2.0;netcoreapp2.0;net35;</TargetFrameworks>
        <RuntimeIdentifiers>win7-x86;win7-x64</RuntimeIdentifiers> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>

  1. После внесения этих изменений перезагрузите проект и соберите его.
  2. Это сгенерирует .dll файлы и пакет Nuget для этой сборки в папке Debug/Release проекта.
  3. Добавьте эти .dll в Nuget и получить доступ к этим проектам из Nuget.

Попробуйте описанные выше шаги. Это должно работать.

Добавить ниже в csproj

  <PropertyGroup>
    <TargetFrameworks>netcoreapp2.1;net471</TargetFrameworks>
  </PropertyGroup>

У меня было всего несколько исходных файлов. Для меня это сработало лучше всего

  1. Закрытие Visual Studio 2022
  2. Переименование папки решения
  3. Создание нового решения Visual Studio типа «Приложение WPF (.NET Framework)» с исходным именем папки и тем же именем проекта.
  4. Копирование всех *.xaml. *.xaml.cs и *.cs из старого проекта в новый, не трогая *.sln, *.csproj и *.config.
  5. Проект->Добавить существующий элемент… и добавление скопированных элементов
  6. Добавление всех специальных ссылок.

Вот и переделал все без нареканий.

Мой стандартный проект.net относительно прост с несколькими пакетами Nuget. Я только что изменился

<TargetFramework>netstandard2.0</TargetFramework>

К

<TargetFramework>**net461**</TargetFramework> в разделе PropertyGroup файла.csproj, и это сделало всю работу за меня. Спасибо Брэндону Баркли за ваш ответ в комментариях.

Лично я просто меняю net461 и перезагружаю всю программу. Это просто работает.

Вам также может потребоваться перейти к атрибутам и выбрать целевую платформу .NET Framework 4.6.1, если вы видите, что выбор пуст.

Visual Studio может автоматически распознать мое изменение в .NET Framework, а не в .NET Core, внешний вид настроек также изменится соответствующим образом.

Другие вопросы по тегам