繁体   English   中英

在 .net 核心控制台应用程序中使用 .net class 库时项目构建失败

[英]Project build failed while using .net class library in .net core console application

我有.Net Core 3.1 控制台应用程序,它引用了作为参考添加的 class 库项目FxCore class 库 csproj 具有<TargetFrameworks>net45;net451;net452;net46;net461;net462;net47;net471;net472</TargetFrameworks>我尝试将其更改为<TargetFrameworks>net45;</TargetFrameworks> ,但仍然出现相同的错误.

我收到以下错误。我已尝试清理 -> ReBuild,重新打开 Visual Studio 2019(版本 16.5.2)

1>----- 构建开始:项目:FxCore,配置:调试任何 CPU ------ 1>J:\Test\core\fx-core\FxCore.csproj(3,3):警告 MSB4011 : "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Microsoft.Common.props" 无法再次导入。 它已经在“C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 1>C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets(37,3): 警告 MSB4011: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.CSharp.targets”无法再次导入。 它已在“J:\Test\core\fx-core\FxCore.csproj (120,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2081,5):警告 MSB3245:无法解析此引用。 找不到程序集“FXEntity,版本=1.0.1.12,文化=中性,处理器架构=MSIL”。 检查以确保该程序集存在于磁盘上。 如果您的代码需要此引用,您可能会遇到编译错误。 1>FxCore -> J:\Test\core\fx-core\bin\Debug\FxCore.dll 1>J:\Test\core\fx-core\FxCore.csproj(3,3):警告 MSB4011:“C :\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Microsoft.Common.props" 无法再次导入。 它已经在“C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 1>C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets(37,3): 警告 MSB4011: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.CSharp.targets”无法再次导入。 它已在“J:\Test\core\fx-core\FxCore.csproj (120,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 1>J:\Test\core\fx-core\FxCore.csproj(3,3): 警告 MSB4011: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Microsoft.Common .props”无法再次导入。 它已经在“C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 1>C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets(37,3): 警告 MSB4011: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.CSharp.targets”无法再次导入。 它已在“J:\Test\core\fx-core\FxCore.csproj (120,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 1>J:\Test\core\fx-core\FxCore.csproj: 警告 NU1603: FxCore 依赖于 Microsoft.Practices.ServiceLocation (>= 1.3.0) 但未找到 Microsoft.Practices.ServiceLocation 1.3.0。 Microsoft.Practices.ServiceLocation 1.4.11 的近似最佳匹配已解决。 1>完成构建项目“FxCore.csproj”。 1>完成构建项目“FxCore.csproj”。 2>----- 构建开始:项目:CoreConsoleApp,配置:调试任何 CPU ------ 2>J:\Test\core\fx-core\FxCore.csproj(3,3):警告 MSB4011 : "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Microsoft.Common.props" 无法再次导入。 它已经在“C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 2>C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets(37,3): 警告 MSB4011: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.CSharp.targets”无法再次导入。 它已在“J:\Test\core\fx-core\FxCore.csproj (120,3)”中导入。 这很可能是构建创作错误。 随后的导入将被忽略。 2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1655,5): 警告 NU1702: ProjectReference 'J:\Test\core\ fx-core\FxCore.csproj' 是使用 '.NETFramework,Version=v4.6.1' 而不是项目目标框架 '.NETCoreApp,Version=v3.1' 解决的。 此项目可能与您的项目不完全兼容。 2>J:\Test\core\CoreConsoleApp\Program.cs(2,7,2,9):错误 CS0246:找不到类型或命名空间名称“FX”(您是否缺少 using 指令或程序集引用?) 2>J:\Test\core\CoreConsoleApp\Program.cs(7,24,7,32): error CS0246: The type or namespace name 'FxCommon' could not be found(您是否缺少 using 指令或程序集参考?) 2>完成构建项目“CoreConsoleApp.csproj”——失败。 ========== 构建:1 成功,1 失败,0 最新,0 跳过 ==========

但是在 Program.cs 中我可以使用代码,IntelliSense 没有显示任何错误。

using System;
using FX.Core;
namespace CoreConsoleApp
{
    class Program
    {
        private static FxCommon _fxCommon = new FxCommon();
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            _fxCommon.Logger.LogWrite("hello");
        }
    }
}

由于这个原因,我无法运行控制台应用程序,请帮助。

.NET 核心不消耗.NET 框架( net### )目标; 它可以消耗netstandard*netcoreapp*

所以; 您的FxCore将需要定位/多定位 .NET 标准或 .NET 核心之一。

在选择目标/多目标方面

  1. 目标netstandard* - 如果您在实现中不需要任何特定于框架的东西
  2. 多目标netcoreapp*netstandard* - 如果您想在netcoreapp*功能可用时使用它们,或者在其他情况下使用下级通用实现
  3. 多目标netcoreapp*net### - 如果实现完全是特定于平台的并且不可能有通用实现

(其中* / ###是您选择的版本 - 当前可能是netstandard2.1netcoreapp3.1net472 / net48

我通过从 class 库 csproj 文件中删除以下行解决了这个问题。

  <PropertyGroup>
    <TargetFrameworks>net45;net451;net452;net46;net461;net462;net47;net471;net472</TargetFrameworks>
  </PropertyGroup>
  <PropertyGroup>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM