我开发了一个针对 .NetStandard 和 .NetFramework 的 C# 库框架。这是通过编辑 .csproj 文件,将 TargetFramework 更改为 TargetFramework 来完成的s并将它们都添加到标签中:
<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>
我现在可以将此框架添加为我的其他项目中的 ProjectReference。
这对于所有具有 .csproj 文件的项目都非常有效。
然而,当将框架添加到 asp 网站项目(没有 .csproj 文件)时,我遇到一些非常奇怪的构建错误。
Could not get dependencies for project reference 'XX.Framework' wwwroot
The type 'System.Enum' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
我的网站 TargetFramework 是 4.7.1,如我的 web.config 中所示:
<compilation debug="true" targetFramework="4.7.1">
我从导入的 .dll 的文件大小中看到,它获取的是 .NetStandard 而不是 .NetFramework 的 dll。正确地解释为什么我会遇到构建错误。
请注意,当通过 nuget 添加框架(而不是项目引用)时,它确实获得了正确的 dll,即 .NetFramework dll。因此没有构建错误。
我的问题是这样的:通过项目引用添加多目标框架时,为什么 ASP.NET 网站会忽略 web.config 中的 targetFramework?
Edit 1:
我的网站结构:
Edit 2:
VS 解决方案并附有问题示例。https://github.com/srenrd/MultiFrameworkExample https://github.com/srenrd/MultiFrameworkExample