当从多框架控制台应用程序引用 .netcore dll 时,NU1201 项目与 net472 不兼容 [英] NU1201 Project is not compatible with net472 when a .netcore dll is referenced from a multiframework console app

查看:35
本文介绍了当从多框架控制台应用程序引用 .netcore dll 时,NU1201 项目与 net472 不兼容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个控制台应用程序,以便

解决方案

需要条件引用项目

在您的 csproj 中:

<ProjectReference Include="..\mopcore\MopCore.csproj"/></项目组><ItemGroup Condition=" '$(TargetFramework)' == 'net472' "><ProjectReference Include="..\MopStandard\MopFW.csproj"/></项目组>

或者你需要让 MopCore 也兼容 net472.例如.实施 netstandard2.0.

I am trying to make a console application so as to troubleshoot my question here

I have put the source on Git Hub

The console application project file is

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netcoreapp3.1;net472</TargetFrameworks>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\mopcore\MopCore.csproj" />
    <ProjectReference Include="..\MopFW\MopFW.csproj" />
  </ItemGroup>
</Project>

Program.cs is

using System;
using System.Linq;
using MopCore;
using MopFW;  // error shows here
namespace ConsoleAppCore2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            CountMopsCore();
            CountMopsFramework();
        }

        private static void CountMopsCore()
        {
            Console.WriteLine($"Hi");
            using (var context = new MopContext())
            {
                var num = context.Mops.Count();
                Console.WriteLine($"There are {num} mops \r\n providern {context.Database.ProviderName}");
            }
            Console.ReadKey();
        }

        private static void CountMopsFramework()
        {
            Console.WriteLine($"Hi");
            using (var context = new MopFW.MopContext())
            {
                var num = context.Mops.Count();
                Console.WriteLine($"There are {num} mops \r\n in {context.Database.Connection.ConnectionString}");
            }
            Console.ReadKey();
        }
    }
}

The netcoreapp3.1 project file is

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AssemblyName>MopCore</AssemblyName>
    <RootNamespace>MopCore</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.4" />
  </ItemGroup>
</Project>

The framework project file is

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="EntityFramework" Version="6.4.4" />
  </ItemGroup>
</Project>

I get build errors

Error   NU1201  Project MopCore is not compatible with net472 (.NETFramework,Version=v4.7.2). Project MopCore supports: netcoreapp3.1 (.NETCoreApp,Version=v3.1)    ConsoleAppCore2 C:\Users\kirst\source\repos\MopData\ConsoleAppCore2\ConsoleAppCore2.csproj  1   

[Update] I understand that the best way would be to use .netstandard

However I want to explore just getting .netcore and .net472 to work together.

After correcting the console project to be

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netcoreapp3.1;net472</TargetFrameworks>
  </PropertyGroup>
    <ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">
        <ProjectReference Include="..\mopcore\MopCore.csproj" />
    </ItemGroup>
    <ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
        <ProjectReference Include="..\MopFW\MopFW.csproj" />
    </ItemGroup>
</Project>

I still get build errors in program.cs

解决方案

You need to conditional reference the projects

In your csproj:

<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">
    <ProjectReference Include="..\mopcore\MopCore.csproj" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
    <ProjectReference Include="..\MopStandard\MopFW.csproj" />
</ItemGroup>

OR you need to make MopCore also compatible for net472. E.g. implement netstandard2.0.

这篇关于当从多框架控制台应用程序引用 .netcore dll 时,NU1201 项目与 net472 不兼容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆