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

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

概述我正在构建一个DLL类库 – 我希望使尽可能多的人可以使用它.我应该使用哪个版本的.NET Framework和哪个C#版本?是否可以为不同版本生成向后兼容的DLL或不同的DLL?或者 Windows自动更新.NET框架,所以我应该使用最新版本?任何指导赞赏! 我们针对某些产品并发定位了多个运行时版本(.NET 1.1,.NET 2.0和.NET 3.5). 我们以几种方式处理这个问题: >单独的 我正在构建一个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符号.

总结

以上是内存溢出为你收集整理的什么.NET Framework和C#版本应该与我的类库定位?全部内容,希望文章能够帮你解决什么.NET Framework和C#版本应该与我的类库定位?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1257800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存