[英]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 核心之一。
在選擇目標/多目標方面:
netstandard*
- 如果您在實現中不需要任何特定於框架的東西netcoreapp*
和netstandard*
- 如果您想在netcoreapp*
功能可用時使用它們,或者在其他情況下使用下級通用實現netcoreapp*
和net###
- 如果實現完全是特定於平台的並且不可能有通用實現 (其中*
/ ###
是您選擇的版本 - 當前可能是netstandard2.1
、 netcoreapp3.1
和net472
/ 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.