首页 > 解决方案 > .NETStandard 多目标库包在 Netstandard 2.0 项目中出现 CS0234 错误

问题描述

所以我必须将一个项目从 重构.NET FrameworkNet StandardNet Standard版本是2.0,我的.NET Framework版本是4.7.2。我在我的 csproj 中使用多目标,因为我仍然需要一些.NET Framework不存在的功能.NET Standard,例如System.Runtime.Remoting. 我认为多目标可以解决我Net Standard没有包的问题,​​但它给了我这个错误:

错误 CS0234 命名空间“System.Runtime”中不存在类型或命名空间名称“Remoting”(您是否缺少程序集引用?) Project.Standard (netstandard2.0)

这是我的 Csproj:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFrameworks>netstandard2.0;net472</TargetFrameworks>
        <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    </PropertyGroup>

    <ItemGroup Condition="'$(TargetFramework)'=='net472'">
        <Reference Include="System.Runtime.Remoting" />
    </ItemGroup>


</Project>

出于某种原因,我的代码无法定位它.NET Framework何时需要,或者我在我的 Csproj 中遗漏了什么?

标签: c#asp.net-core.net-standard

解决方案


您的 CSPROJ 文件已正确设置。我将假设有一些源代码引用了程序集。

你需要弄清楚你在源代码中引用它的位置,并将它包含在一个如下所示的指令中:

public class Class1
{
    public void TestMe()
    {
#if NET472
        var test = new System.Runtime.Remoting.Metadata.SoapAttribute();
#endif
    }
}

这将确保它仅在为 .NET Framework 4.7.2 而不是 .NET Standard 编译时可见。


推荐阅读