将.Net Core转换为.Net Framework

问题描述 投票:30回答:9

我有一个.Net Core项目Web项目,由于各种原因希望将其转换为.Net Framework项目。

有没有一种简单的方法可以做到这一点,或者我必须重新开始并从以前的项目中导入代码

asp.net .net asp.net-core .net-framework-version
9个回答
22
投票

我已将核心项目加载到VS 2017 RC社区并在文本编辑器中打开* .csproj。

只需删除teg

<RuntimeFrameworkVersion>

并替换

<TargetFramework>netcoreapp1.1</TargetFramework>

<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>

毕竟在项目属性设置为任何其他框架并重置(VS重新加载和修复* .csproj文件)。


8
投票

这在VS2017中对我有用:

从.net核心Web项目模板开始。

编辑* .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文件,如果版本与我的版本不同,您可以通过GUI添加它们。


7
投票

这里没有任何答案对我有用。在.Net Core 2中,project.json文件不再存在。但是,我确实使用以下步骤解决了这个问题。

1)我从现有项目中删除了所有nuget包。

2)我创建了一个单独的.net核心Web应用程序项目,目标是.net 4.61。这是为了获得默认的nuget包。

3)我编辑了临时项目的.csproj文件,复制了ItemGroup中的所有PackageReference节点,并将它们粘贴到我现有的项目.csproj文件中。

4)编辑TargetFramework节点(在PropertyGroup内)从“netstandard2”到“net461”

我有一些软件包更改,以跟踪和解决,但否则我能够运行。


2
投票

我做到了这一点并且有效

删除

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

来自project.json

然后用这个替换框架部分:

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

然后恢复包。

编辑:现在已经过时了。


1
投票

这里有很多相似的答案,但我没有看到一个我最终做的事情,所以我想留在这里以防万一其他人穿着同样的鞋子。

为了清楚起见,我的项目是一个控制台程序。因此,如果您尝试将此答案用于其他内容,您的里程可能会有所不同。

.csproj文件中,在<PropertyGroup></PropertyGroup>标记内,修改<TargetFramework>以反映以下内容:

<TargetFramework>net461</TargetFramework>

现在,在这个例子中,我使用的是v4.6.1。我只能假设您将在“net”这个词后插入您的版本,而没有句点。祝好运!


0
投票

为了实现这一目标,您需要执行几个步骤。

  1. 首先右键单击.csproj文件并添加以下内容

   <TargetFrameworks>netstandard2.0;netcoreapp2.0;net35;</TargetFrameworks>
        <RuntimeIdentifiers>win7-x86;win7-x64</RuntimeIdentifiers> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
  1. 完成这些更改后,重新加载项目并构建它。
  2. 这将在项目的Debug / Release文件夹中为此构建生成.dll文件和Nuget包。
  3. 将这些.dll添加到nuget并从nuget访问这些项目。

尝试以上步骤。这应该工作。


0
投票

在“卸载项目”之后的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>

0
投票

我的.net标准项目相对简单,几乎没有Nuget包。我改变了

<TargetFramework>netstandard2.0</TargetFramework>

<TargetFramework>**net461**</TargetFramework>在.csproj文件的PropertyGroup部分下,这对我来说很有帮助..感谢Brandon Barkley在评论中的回答。


0
投票

在csproj中添加以下内容

  <PropertyGroup>
    <TargetFrameworks>netcoreapp2.1;net471</TargetFrameworks>
  </PropertyGroup>
© www.soinside.com 2019 - 2024. All rights reserved.