[英]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.