【问题标题】:Convert .Net Core to .Net Framework将 .Net Core 转换为 .Net 框架
【发布时间】:2017-07-26 04:10:33
【问题描述】:

我有一个 .Net Core 项目 web 项目,出于各种原因想将其转换为 .Net Framework 项目。

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

【问题讨论】:

  • 没有自动的方法可以做到这一点,我严重怀疑永远不会有。
  • @raBinn 这不是 OP 所要求的。
  • 您想恢复到 ASP.NET MVC 5 还是希望能够使用完整的 .NET Framework?
  • 您的问题将 .NET Core 描述为 .NET Framework。通过将netcoreapp1.0 更改为net462net451 或类似名称,可以使用目标名称。 ASP.NET CoreASP.NET MVC 5 并不是那么容易。我已经为 SharePoint 加载项完成了它,最后我将所有代码复制到了一个以ASP.NET MVC 5 为目标的新项目中。

标签: asp.net .net asp.net-core .net-framework-version


【解决方案1】:

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

只需删除 teg

<RuntimeFrameworkVersion>

替换

<TargetFramework>netcoreapp1.1</TargetFramework>

<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>

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

【讨论】:

  • 我的 csproj 文件没有 标签,但我遵循了这些说明的其余部分,这仍然适用于我的项目。
  • @Alexander VS不用关闭,直接卸载项目,右键项目,直接在VS中编辑.csproj文件,然后再次加载
  • 这个解决方案让我足够接近,但我在构建与推断框架相关的时候遇到了一些错误。它给了我在 GUI 中实际能够选择框架所需的东西。完成后,Visual Studio 中的实际行输出为 net461
  • 这对我不起作用,我很难撤消它。读者,我建议先备份你的 .csproj 文件。
【解决方案2】:

这在 VS2017 中对我有用:

从 .net core 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 添加它们。

【讨论】:

  • 这工作得很好,v4.6.1 没有。不知道为什么
【解决方案3】:

这里有很多类似的答案,但我没有看到一个与我最终做的完全一样的答案,所以我想把这个留在这里,以防其他人处于同样的境地。

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

在您的.csproj 文件中,在&lt;PropertyGroup&gt;&lt;/PropertyGroup&gt; 标记内,修改&lt;TargetFramework&gt; 以反映以下内容:

&lt;TargetFramework&gt;net461&lt;/TargetFramework&gt;

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

【讨论】:

  • 我在 VisualStudio 2019 上使用 VB.Net 进行开发,并在 vbproj 文件上成功使用了相同的技术。我只将 'netcoreapp3.1' 更改为 net472
  • 感谢您的实际回答
【解决方案4】:

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

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

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

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

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

我有一些包更改要跟踪和解决,但除此之外我能够运行。

【讨论】:

  • 现在,在 2017 年,就我而言,我把 net471
  • @Tony 好地方。我现在是 472。但这真的无关紧要,因为一旦你做出改变,你就可以通过 VS 中的项目属性来编辑它。
【解决方案5】:

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

  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。

尝试以上步骤。这应该有效。

【讨论】:

    【解决方案6】:

    在“卸载项目”后的 Visual Studio 2017 (15.6.2) 版本中,右键单击并选择“编辑&lt;your project file&gt;”,我必须:

    1. 添加节点:

      &lt;TargetFrameworkVersion&gt;v4.5.2&lt;/TargetFrameworkVersion&gt;

    2. 删除节点:

      &lt;TargetPlatformIdentifier&gt;UAP&lt;/TargetPlatformIdentifier&gt;

      &lt;TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' "&gt;10.0.16299.0&lt;/TargetPlatformVersion&gt;

      &lt;TargetPlatformMinVersion&gt;10.0.16299.0&lt;/TargetPlatformMinVersion&gt;

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

    【讨论】:

      【解决方案7】:

      我的 .net 标准项目相对简单,只有几个 Nuget 包。我刚换了

      &lt;TargetFramework&gt;netstandard2.0&lt;/TargetFramework&gt;

      &lt;TargetFramework&gt;**net461**&lt;/TargetFramework&gt; 在 .csproj 文件的 PropertyGroup 部分下,这为我完成了工作。感谢 Brandon Barkley 在 cmets 中的回答。

      【讨论】:

        【解决方案8】:

        在csproj下面添加

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

        【讨论】:

          猜你喜欢
          • 2012-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-15
          • 1970-01-01
          • 1970-01-01
          • 2016-02-21
          • 1970-01-01
          相关资源
          最近更新 更多