在 .Net Framework 4.8 项目中引用 .Net Standard 2.0 程序集会生成构建错误

问题描述 投票:0回答:1

在 .NET Standard 2.0 程序集中,我有一个写入事件日志的函数:

public static void WriteEventLog(string Source, string Message, EventLogEntryType EvType)

枚举

EventLogEntryType
在 nuget
System.Diagnostics.EventLog
8.0.0 中引用。程序集构建时没有错误。

但是当我引用 .NET 4.8 上的另一个类库中的程序集并尝试调用此函数时,我收到此构建错误:

错误CS0012
类型“EventLogEntryType”是在未引用的程序集中定义的。您必须添加对程序集“System.Diagnostics.EventLog,Version=8.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”的引用

所以我尝试在 .NET 4.8 库中引用

System.Diagnostics.EventLog
8.0.0,但没有帮助。我仍然遇到同样的错误。

我做错了什么吗?我该如何解决这个问题?

看起来编译器使用的是程序集

EventLogEntryType
(版本 4.0.0)中的
System
,而不是
EventLogEntryType
8.0.0 中的
System.Diagnostics.EventLog

根据 csproj 的要求:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0</TargetFrameworks>
    <OutputType>Library</OutputType>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <RootNamespace>xx.yyy.zzz</RootNamespace>
    <DebugSymbols>true</DebugSymbols>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' != 'Debug'">
    <DebugType>embedded</DebugType>
    <Optimize>true</Optimize>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="System.configuration" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.0" />
    <PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
    <PackageReference Include="OpenXMLSDK-MOT" Version="2.7.1" />
    <PackageReference Include="ncalc" Version="1.3.8" />
    <PackageReference Include="Microsoft.AspNetCore.SystemWebAdapters" Version="1.3.0" />
    <PackageReference Include="System.Drawing.Common" Version="8.0.8" />
    <PackageReference Include="System.IO.Packaging" Version="8.0.0" />
    <PackageReference Include="System.ServiceModel.Primitives" Version="4.10.3" />
    <PackageReference Include="System.ServiceModel.Http" Version="4.10.3" />
    <PackageReference Include="System.ServiceModel.Duplex" Version="4.10.3" />
    <PackageReference Include="System.ServiceModel.NetTcp" Version="4.10.3" />
    <PackageReference Include="System.ServiceModel.Security" Version="4.10.3" />
    <PackageReference Include="System.ServiceModel.Federation" Version="4.10.3" />
  </ItemGroup>
</Project>
c# .net .net-standard .net-standard-2.0
1个回答
0
投票

参考

System.Diagnostics.EventLog
而不是
Microsoft.Extensions.Logging.EventLog
有效。

© www.soinside.com 2019 - 2024. All rights reserved.