【问题标题】:Project build failed while using .net class library in .net core console application在 .net 核心控制台应用程序中使用 .net 类库时项目构建失败
【发布时间】:2020-07-08 06:56:55
【问题描述】:

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

我收到以下错误。我已尝试清理 -> 重新构建,重新打开 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 文件\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)"。 这很可能是构建创作错误。随后的导入 将被忽略。 1>C:\程序 文件\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 文件\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)"。 这很可能是构建创作错误。随后的导入 将被忽略。 1>C:\程序 文件\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 文件\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)"。 这很可能是构建创作错误。随后的导入 将被忽略。 1>C:\程序 文件\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 文件\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props (40,3)"。 这很可能是构建创作错误。随后的导入 将被忽略。 2>C:\程序 文件\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: The 找不到类型或命名空间名称“FX”(您是否缺少 使用指令还是程序集引用?) 2>J:\Test\core\CoreConsoleApp\Program.cs(7,24,7,32): 错误 CS0246: The 找不到类型或命名空间名称“FxCommon”(您是否缺少 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");
        }
    }
}

因此,我无法运行控制台应用程序,请帮助。

【问题讨论】:

  • 那么你的问题是什么?
  • 如何解决这个问题?并构建解决方案

标签: c# .net visual-studio .net-core asp.net-core-3.1


【解决方案1】:

.NET Core 不消耗 .NET Framework (net###) 目标;它可以消耗netstandard*netcoreapp*

所以;您的 FxCore 将需要定位/多定位 .NET Standard 或 .NET Core 之一。

在选择什么到目标/多目标方面:

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

* / ### 是您选择的版本 - 可能是 netstandard2.1netcoreapp3.1net472/net48 在当前时间)

【讨论】:

  • 我已经通过从 csproj 文件中删除几行来解决这个问题,我已经在我的回答中提到了这一点。请让我知道它是否错误。
【解决方案2】:

我已通过从类库 csproj 文件中删除以下行来解决此问题。

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

【讨论】:

  • 这很奇怪;您需要指定一个或多个目标框架,否则您会收到 NETSDK1013 构建错误 - 是否还有另一个 &lt;TargetFramework&gt; / &lt;TargetFrameworks&gt; 元素来自树中的其他位置?
  • @MarcGravell 在 csproj 文件中还有另一行 &lt;TargetFrameworkVersion&gt;v4.5&lt;/TargetFrameworkVersion&gt;
  • 虽然没有必要添加所有个可能的框架。为什么首先添加这个?是否还有其他错误,并添加了此行以使其静音?
  • 它已经在那里了,我今天刚刚克隆了这个项目@PanagiotisKanavos
  • 不,在本地检查,添加&lt;TargetFrameworkVersion&gt;v4.5&lt;/TargetFrameworkVersion&gt; 对阻止NETSDK1013 没有任何用处。您的构建中涉及更多内容。
猜你喜欢
  • 2019-09-26
  • 2017-02-10
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多