簡體   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