什么.NET Framework和C#版本应该与我的类库定位?

前端之家收集整理的这篇文章主要介绍了什么.NET Framework和C#版本应该与我的类库定位?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个DLL类库 – 我希望使尽可能多的人可以使用它.我应该使用哪个版本的.NET Framework和哪个C#版本?是否可以为不同版本生成向后兼容的DLL或不同的DLL?或者 Windows自动更新.NET框架,所以我应该使用最新版本?任何指导赞赏!

解决方法

我们针对某些产品并发定位了多个运行时版本(.NET 1.1,.NET 2.0和.NET 3.5).

我们以几种方式处理这个问题:

>单独的解决方案和项目文件以及.NET 1.1,2.0和3.5 SP1中的每一个,但引用相同的源文件.

例如:

 \ProductFoo_1_1.sln (.NET 1.1 solution,VS 2003)
 \ProductFoo_2_0.sln (.NET 2.0 solution,VS 2008)
 \ProductFoo_3_5.sln (.NET 3.5 solution,VS 2008)

 \FooLibrary\FooLibrary_1_1.csproj (.NET 1.1 Project,VS 2003) 
 \FooLibrary\FooLibrary_2_0.csproj (.NET 2.0 Project,VS 2008) 
 \FooLibrary\FooLibrary_3_5.csproj (.NET 3.5 Project,VS 2008) 

 \FooLibrary\FooClass.cs (shared amongst all Projects)
 \FooLibrary\FooHelpers_1_1.cs (only referenced by the .NET 1.1 project)

 \FooService\FooService_3.5.csproj (.NET 3.5 Project,VS 2008)
 \FooService\FooService.cs

>在每个解决方案中定义NET_X_X符号
>对于.NET Framework特定代码,我们使用预处理器指令,如:

public void SomeMethod(int param)
{
#ifdef NET_1_1
 // Need to use Helper to Get Foo under .NET 1.1
  Foo foo = Helper.GetFooByParam(param);
#elseif NET_2_0 || NET_3_5
 // .NET 2.0 and above can use preferred  method. 
  var foo =  new Foo { Prop = param }; 
  foo.LoadByParam();  
#endif 
  foo.Bar();
}

#ifdef NET_3_5
// A method that is only available under .NET 3.5 
public int[] GetWithFilter(Func Filter)
{ 
  // some code here
}
#endif 

为了澄清,以#开头的上述行是预处理器命令.编译解决方案时,C#编译器(csc)预处理源文件.
如果你有一个#ifdef语句,那么csc将评估它是否确定了该符号是否被定义,如果是,则在编译项目时包括该段中的行.

这是一种在某些条件下标记代码进行编译的方法 – 我们还使用它在更详细的调试版本中包含更多密集的调试信息,如下所示:

#if DEBUG_VERBOSE
  Logging.Log("Web service Called with parameters: param = " + param);
  Logging.Log("Web service Response: " + response); 
  Logging.Log("Current Cache Size (bytes): " + cache.TotalBytes); 
  // etc. 
#endif 

>然后我们有NAnt脚本,可以自动为每个.NET版本生成一个版本.
我们碰巧通过TeamCity控制所有这些,但是我们也可以手动触发NAnt脚本.

它确实使事情变得更加复杂,所以我们只倾向于在需要维护遗留的.NET 1.1或2.0实例的地方(例如,客户不能/不会升级的地方).

我想象当.NET 4.0滚动时,我们将做同样的事情,只需添加一个NET_4_0符号.

原文链接:https://www.f2er.com/csharp/95813.html

猜你在找的C#相关文章