.NETStandard 多目标库包在 Netstandard 2.0 项目上给我 CS0234 错误

.NETStandard multi-targeting library packages gives me CS0234 error on Netstandard 2.0 project

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

Error CS0234 The type or namespace name 'Remoting' does not exist in the namespace 'System.Runtime' (are you missing an assembly reference?) 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 中是否缺少某些内容?

您的 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 编译时可见。