У меня есть веб-проект проекта .Net Core и по разным причинам хочу преобразовать его в проект .Net Framework.
Есть ли простой способ сделать это, или мне нужно начать снова и импортировать код из предыдущих проектов.
У меня есть веб-проект проекта .Net Core и по разным причинам хочу преобразовать его в проект .Net Framework.
Есть ли простой способ сделать это, или мне нужно начать снова и импортировать код из предыдущих проектов.
Я загрузил основной проект в сообщество VS 2017 RC и откройте *.csproj в текстовом редакторе.
Просто удалите тег
<RuntimeFrameworkVersion>
и замените
<TargetFramework>netcoreapp1.1</TargetFramework>
to
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
И в конце концов в свойствах проекта заданы любые другие фреймворки и reset back (VS перезагружать и восстанавливать *.csproj файл).
Ни один из ответов здесь не работал у меня. В .Net Core 2 файл project.json больше не существует. Однако я решил эту проблему, выполнив следующие шаги.
1) Я удалил все пакеты nuget из моего существующего проекта.
2) Я создал отдельный проект веб-приложения .net, ориентированный на .net 4.61. Это было для получения пакетов nuget по умолчанию.
3) Я редактировал временный проект .csproj, копировал все узлы PackageReference внутри ItemGroup и вставлял их в мои существующие проекты .csproj.
4) Отредактировал TargetFramework node (внутри PropertyGroup) с "netstandard2" до "net461"
У меня было несколько изменений в пакете для отслеживания и устранения, но в остальном я смог запустить.
Это работало для меня в 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, и вы можете добавить их через графический интерфейс, если версии отличаются от моих выше.
Я сделал это, и это сработало
удалять
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
из проекта .json
затем замените часть фреймворков следующим образом:
"frameworks": {
"net46": { }
},
затем восстановите пакеты.
РЕДАКТИРОВАТЬ: Это устарело сейчас.
Чтобы достичь этого, вам нужно выполнить несколько шагов.
<TargetFrameworks>netstandard2.0;netcoreapp2.0;net35;</TargetFrameworks>
<RuntimeIdentifiers>win7-x86;win7-x64</RuntimeIdentifiers> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
В моей версии Visual Studio 2017 (15.6.2) после "Выгрузки проекта", щелкнув правой кнопкой мыши и выбрав "Изменить <your project file>
, я должен был:
Добавьте узел:
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
Удалить узлы:
<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>
Мой стандартный проект .net относительно прост с несколькими пакетами Nuget. Я только что изменился
<TargetFramework>netstandard2.0</TargetFramework>
К
<TargetFramework>**net461**</TargetFramework>
в разделе PropertyGroup файла .csproj, и это помогло мне. Спасибо Брэндону Баркли за ваш ответ в комментариях.
добавить ниже в csproj
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;net471</TargetFrameworks>
</PropertyGroup>
Здесь было много похожих ответов, но я не увидел ни одного, который бы вполне соответствовал моим действиям, поэтому я хотел бы оставить это здесь на всякий случай, если кто-то еще в той же обуви.
Просто чтобы прояснить, мой проект был консольной программой. Так что, если вы пытаетесь использовать этот ответ для чего-то другого, ваш пробег может отличаться.
В вашем файле .csproj
внутри <PropertyGroup></PropertyGroup>
измените <TargetFramework>
чтобы отразить следующее:
<TargetFramework>net461</TargetFramework>
Теперь в этом примере я использовал v4.6.1. Я могу только предположить, что вы включите свою версию за словом "net", без точек. Удачи!