如何从Visual Studio 2017中的.NET Framework 4.5控制台应用程序引用.NET标准库



我终于安装了Visual Studio 2017.2,并试图让我的第一个项目正常工作,但是遇到了一些麻烦,我希望在这里解决。

我有一个非常简单的.NET标准库,描述为以下项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
  </PropertyGroup>
</Project>

还有一个非常简单的.NET Framework控制台应用程序,它引用了上面的.NET标准库,并被描述为以下项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net45</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..CommonCommon.csproj" />
  </ItemGroup>
</Project>

生成控制台应用程序时,出现以下生成错误:

C:Program Filesdotnetsdk1.0.4NuGet.targets(97,5): error : Project Common is not compatible with net45 (.NETFramework,Version=v4.5). Project Common supports: netstandard1.6 (.NETStandard,Version=v1.6)

我看到了这个问题并尝试了那里提供的一些建议,但没有一个奏效。 所以,这似乎是一个不同的问题。 请注意,这发生在构建我的解决方案期间,并且不会以任何方式引用(显式(NuGet 包。

最后,如果有帮助,我有一个解决方案可以在这里演示此问题:https://github.com/Mike-EEE/Stash/blob/master/VS2017.Multi/VS2017.dotNetFramework.sln

.NET

Framework 4.5 仅支持使用面向 .NET Standard 1.0 或 1.1 的 .NET 标准库。由于您的库面向 1.6,因此该工具在此处执行正确的操作并出现错误(因为您的库可能使用 .NET Framework 4.5 中不可用的 API(。如果将库发布为 NuGet 包并通过包引用使用它,则包还原也会出错(错误指出包不兼容(。

对于 .NET Framework 版本支持哪个 .NET 标准版本存在一些混淆,特别是因为有可用的预览工具("2.0"(可以更改这些版本。因此,文档中的".NET 平台支持"表包含有关受支持版本的两行。但是,在您的情况下,这两个版本都将 .NET Framework 4.5 限制为 .NET Standard 1.1。

若要使 .NET Framework 项目与 .NET 标准库兼容,必须从 NuGet 获取NETStandard.Library
现在我找不到任何官方资源来说明为什么这是必须的,但据我所知,NETStandard.Library有必要的链接来制作从.NET Standard API到.NET Framework的映射。
如果您想了解更多信息,我建议您阅读NET Standard的官方文档。

最新更新