首页 > 解决方案 > asp网站项目中多目标框架的问题

问题描述

我开发了一个针对 .NetStandard 和 .NetFramework 的 C# 库框架。这是通过编辑 .csproj 文件,将 TargetFramework 更改为 TargetFramework并将它们都添加到标签中来完成的

<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?

编辑1:我的网站结构:

在此处输入图像描述

编辑2:带有问题示例的VS解决方案。 https://github.com/srenrd/MultiFrameworkExample

标签: c#asp.netvisual-studionuget

解决方案


根据示例代码,请将以下代码添加到 Web.config 文件中:

<assemblies>
    <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
  </assemblies>

在此处输入图像描述


推荐阅读