【问题标题】:.NET Core - The reference assemblies for framework "DNXCore,Version=v5.0" were not found.NET Core - 未找到框架“DNXCore,Version=v5.0”的参考程序集
【发布时间】:2017-08-08 22:59:25
【问题描述】:

将 .NET 核心库 (DNXCore50) 从 VS 2015 迁移到 VS 2017 时出现此错误。

未找到框架“DNXCore,Version=v5.0”的参考程序集。

我的项目文件目前如下所示:(在 VS 2017 迁移向导将我的“project.json”迁移到 .csproj 文件之后)

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

  <PropertyGroup>
    <Description>An FTP and FTPS library for .NET, optimized for speed. Provides extensive FTP commands, file uploads/downloads, SSL/TLS connections and FTP proxies.</Description>
    <VersionPrefix>16.3.0</VersionPrefix>
    <Authors>J.P. Trosclair;Harsh Gupta</Authors>
    <TargetFrameworks>netstandard1.6;dnxcore50</TargetFrameworks>
    <DefineConstants>$(DefineConstants);CORE</DefineConstants>
    <RootNamespace>FluentFTP</RootNamespace>
    <AssemblyName>FluentFTP</AssemblyName>
    <OutputType>Library</OutputType>
    <PackageId>FluentFTP</PackageId>
    <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
    <TargetFrameworkIdentifier>DNXCore</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
    <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.IO" Version="4.3.0.0" />
    <PackageReference Include="System.Net.NameResolution" Version="4.3.0.0" />
    <PackageReference Include="System.Net.Sockets" Version="4.3.0.0" />
    <PackageReference Include="System.Net.Security" Version="4.3.0.0" />
  </ItemGroup>

</Project>

我在编译时遇到上述错误。我尝试过的事情:

  • 改用 .NETPortable v5.0。这里缺课太多了。
  • 改用 .NETCoreApp v1.0。每一堂课都不见了。我用错版本了吗?
  • 使用 DNXCore。没有缺课。 VS 中只有一个错误。

我应该使用什么来代替 DNXCore 5.0?我需要最新的 API,如 TlsStreamUri,不存在的东西或者有没有办法强制编译器编译?请注意,当我使用 VS 2015 编译时,这是一个工作库。现在我已经切换到 VS 2017,我无法再编译我的项目了!在 .NET Core 或 .NET Portable 中。

【问题讨论】:

  • 通常一个socket相关的库应该只需要1.3。我不知道你为什么需要 1.6。

标签: c# visual-studio-2015 .net-core visual-studio-2017 .net-standard


【解决方案1】:

dnxcore50 不再用作 TargetFramework。您可以看到 1.1.0 documentation for netstandard 将其列为已弃用的绰号。

有关最新的 .NET Standard 文档,请参阅.NET Standard FAQ

您可以完全放弃第二个 TFM。 netstandard1.6 可以在 .NET Core 上正常工作。

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

  <PropertyGroup>
    <Description>An FTP and FTPS library for .NET, optimized for speed. Provides extensive FTP commands, file uploads/downloads, SSL/TLS connections and FTP proxies.</Description>
    <VersionPrefix>16.3.0</VersionPrefix>
    <Authors>J.P. Trosclair;Harsh Gupta</Authors>
    <TargetFramework>netstandard1.6</TargetFramework>
    <DefineConstants>$(DefineConstants);CORE</DefineConstants>
    <RootNamespace>FluentFTP</RootNamespace>
    <AssemblyName>FluentFTP</AssemblyName>
    <OutputType>Library</OutputType>
    <PackageId>FluentFTP</PackageId>
    <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
    <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.IO" Version="4.3.0.0" />
    <PackageReference Include="System.Net.NameResolution" Version="4.3.0.0" />
    <PackageReference Include="System.Net.Sockets" Version="4.3.0.0" />
    <PackageReference Include="System.Net.Security" Version="4.3.0.0" />
  </ItemGroup>

</Project>

我还删除了 TargetFrameworkIdentifierTargetFrameworkVersion 的设置,因为这些属性是从 TargetFramework 推断出来的。

【讨论】:

    【解决方案2】:

    嗯,这太令人惊讶了!

    我的 lib 使用 .NETStandard v1.6 成功编译!

    在此处包含我的 XML,以防其他人遇到此问题:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <Description>An FTP and FTPS library for .NET, optimized for speed. Provides extensive FTP commands, file uploads/downloads, SSL/TLS connections and FTP proxies.</Description>
        <VersionPrefix>16.3.0</VersionPrefix>
        <Authors>J.P. Trosclair;Harsh Gupta</Authors>
        <TargetFrameworks>netstandard1.6;dnxcore50</TargetFrameworks>
        <DefineConstants>$(DefineConstants);CORE</DefineConstants>
        <RootNamespace>FluentFTP</RootNamespace>
        <AssemblyName>FluentFTP</AssemblyName>
        <OutputType>Library</OutputType>
        <PackageId>FluentFTP</PackageId>
        <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
        <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
        <TargetFrameworkVersion>v1.6</TargetFrameworkVersion>
        <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
        <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
        <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
        <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
        <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
        <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
        <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
        <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="System.IO" Version="4.3.0.0" />
        <PackageReference Include="System.Net.NameResolution" Version="4.3.0.0" />
        <PackageReference Include="System.Net.Sockets" Version="4.3.0.0" />
        <PackageReference Include="System.Net.Security" Version="4.3.0.0" />
      </ItemGroup>
    
    </Project>
    

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多