代码之家  ›  专栏  ›  技术社区  ›  Iucounu

Visual Studio 2017将不会加载。NET Framework引用。NET标准库

  •  10
  • Iucounu  · 技术社区  · 8 年前

    我已安装Visual Studio 2017。我在纽约有一个类库。NET标准格式,两者都可以使用。NET Framework和。净核心。但当我去 添加 参考号 组件 框架 ,Visual Studio旋转了很长时间,然后说,

    在计算机上找不到框架程序集。

    (此计算机还安装了Visual Studio 2015以及.NET 4.6.1。)

    如何解决此问题?

    我的 .csproj 文件当前如下所示:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
      </PropertyGroup>
    
      <ItemGroup>
        <Compile Remove="Utility\EncryptionUtility.cs" />
      </ItemGroup>
    
      <ItemGroup>
        <Folder Include="Utility\" />
      </ItemGroup>
    
      <ItemGroup>
        <Reference Include="System.Runtime.Caching" />
      </ItemGroup>
    
    </Project>
    

    将目标框架更改为:

    <TargetFramework>netstandard2.0</TargetFramework>
    

    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
    

    允许我最终添加对的引用 System.Runtime.Caching ,但在扩展引用时,IDE中有一个黄色警告图标。这两项都包括在内。净额4.6.1和。NET标准在可折叠部分中,标准下的参考也显示警告图标。生成失败,因为IDE声明仍然缺少引用。

    6 回复  |  直到 6 年前
        1
  •  7
  •   Pang Ajmal PraveeN    5 年前

    当多个目标同时指向两者时。NET Framework和。净核心/。NET标准,您几乎肯定需要使用 MSBuild Conditions 防止。NET Framework引用从溢出到。净核心/。净标准。

    MSBuild条件已经存在了很长一段时间,但Visual Studio中不支持添加它们,您必须手动编辑 .csproj 文件

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
      </PropertyGroup>
    
      <ItemGroup>
        <Compile Remove="Utility\EncryptionUtility.cs" />
      </ItemGroup>
    
      <ItemGroup>
        <Folder Include="Utility\" />
      </ItemGroup>
    
      <ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
        <Reference Include="System.Runtime.Caching" />
      </ItemGroup>
    
    </Project>
    

    还请注意,一旦执行此操作,就不能保证使用Visual Studio添加NuGet或其他程序集引用会正常工作-您可能需要在 .项目文件 文件,以确保将引用添加到正确的条件节。您最好每次手动编辑文件来添加引用。

        2
  •  7
  •   Badr Bellaj    7 年前

    就我而言,我已经尝试了之前提出的所有解决方案,但解决方案只是为Microsoft安装NuGet软件包。C竖琴。

    安装完成后,只需清理项目并重新启动IDE。

        3
  •  3
  •   Pang Ajmal PraveeN    5 年前

    尝试更改内部TargetFrameworks的顺序。csproj公司。

    从…起

    <TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
    

    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
    
        4
  •  1
  •   smirkingman    7 年前

    当我在新安装的PC上打开针对4.7.1的解决方案时,我遇到了这种情况,当时只有4.7.2

        5
  •  0
  •   Jeremy Caney Abloin    6 年前

    或者,您可以使用 .NET Standard Library from Nuget 处理此问题的程序包管理器:

    Screenshot

    中的消息 添加引用 的窗口。NET Framework。创建时。NET标准库 NETStandard.Library 在项目创建过程中自动引用元包。这是一套标准。建议一起使用和支持的NET API。这包括 NETStandard.Platform 包,以及作为核心的其他库。NET,但构建在 NETStandard。站台 .

    这意味着我们不需要单独添加引用。

        6
  •  0
  •   Vikas Kumar    4 年前

    只需安装。NET Framework developer pack for各自的框架,它运行良好。