多目标项目以启用 .net 4.5 和 5 版本
Multi-targeting a project to enable both 4.5 and 5 versions of .net
我正在尝试使用 VS2015 来创建某种统一的开发框架。
整个想法是将代码统一到一个针对 .net 4.5、aspnet50 和 aspnet50core(只要可能)的项目中。
其中一个基本接口应该定义:
- System.Data.IDbConnection 对于 .NET 4.5
- System.Data.Common.DbConnection 对于 AspNet 5
如下:
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
在每个项目中定义一个符号(例如 ASPNET5
、NET45
)。然后每个人都将引用对该构建很重要的程序集。此外,您还可以在两个项目中包含公共文件(并且在这些文件中使用在每个项目中找到的符号来区分代码),但您也可以分解特定于版本的功能的实现(例如 Class1.NET45.cs 这是仅包含在 NET45 项目中)
我正在尝试使用 VS2015 来创建某种统一的开发框架。
整个想法是将代码统一到一个针对 .net 4.5、aspnet50 和 aspnet50core(只要可能)的项目中。
其中一个基本接口应该定义:
- System.Data.IDbConnection 对于 .NET 4.5
- System.Data.Common.DbConnection 对于 AspNet 5
如下:
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
- [项目 1]
在每个项目中定义一个符号(例如 ASPNET5
、NET45
)。然后每个人都将引用对该构建很重要的程序集。此外,您还可以在两个项目中包含公共文件(并且在这些文件中使用在每个项目中找到的符号来区分代码),但您也可以分解特定于版本的功能的实现(例如 Class1.NET45.cs 这是仅包含在 NET45 项目中)