多目标项目以启用 .net 4.5 和 5 版本

Multi-targeting a project to enable both 4.5 and 5 versions of .net

我正在尝试使用 VS2015 来创建某种统一的开发框架。

整个想法是将代码统一到一个针对 .net 4.5、aspnet50 和 aspnet50core(只要可能)的项目中。

其中一个基本接口应该定义:

如下:

public interface
{
#if ASPNET50
    System.Data.Common.DbConnection GetConnection();
#endif

#if NET45
    System.Data.IDbConnection GetConnection();
#endif
}

我已经将 project.json 更新为:

"frameworks": {
    "net45": {
        "dependencies": {
        }
    }
    "aspnet50": {
        "dependencies": {
            "System.Data.SqlClient": "1.0.0-beta2"
        }
    }
}

我唯一的选择是将 System.Data.Common 引用到 .net 4.5 dependencies(但不会工作,因为它不是为支持 .net 4.5 而构建的)。

如果我尝试引用 "System.Data": "4.0.0.0" 甚至没有版本号,VS2015 无法解析为 gac 并且无法识别引用。

有希望吗?

通常您会看到类似以下设置的内容:

  • [解决方法]
    • [项目 1]
      • [属性]
      • 项目 1.NET45.csproj
      • 项目 1.ASPNET5.csproj
      • Class1.cs

在每个项目中定义一个符号(例如 ASPNET5NET45)。然后每个人都将引用对该构建很重要的程序集。此外,您还可以在两个项目中包含公共文件(并且在这些文件中使用在每个项目中找到的符号来区分代码),但您也可以分解特定于版本的功能的实现(例如 Class1.NET45.cs 这是仅包含在 NET45 项目中)