2008-09-17 26 views

回答

1

如果你想做这样的事情,你需要使用预处理器命令和条件编译符号。

我会用这清楚地表明你的目标.NET版本符号(说NET11和NET20),然后包装相关的代码是这样的:

#if NET11 
// .NET 1.1 code 
#elif NET20 
// .NET 2.0 code 
#endif 

之所以做这种方式,而不是一个简单的if/else是一个额外的保护层,以防有人忘记定义符号。

这就是说,你应该深入到你想/需要做到这一点的原因的核心。

0

我会问为什么你必须维护两个代码库,如果有任何机会,我会选择一个代码库。

试图让两个代码库与更改的数量保持同步,并且更改的类型将非常复杂,而为这两个版本构建的构建过程将非常复杂。

+0

关键是要有一个支持为任一目标平台构建的代码库。 – minty 2008-09-17 17:53:40

2

这里有很多不同的选项。在我工作的地方,我们使用#if编译指令,但它也可以使用单独版本的独立程序集来完成。

理想情况下,您至少应该将版本相关代码保存在单独的部分类文件中,并在编译时提供正确的版本。如果我可以及时回去,我会强制执行此操作,现在我们的代码库中有大量的#if编译指示,有时可能很难管理。整个#if编译指令中最糟糕的部分是Visual Studio忽略了不会使用当前定义进行编译的任何内容,因此检查中断更改非常容易。

NUnit同时支持1.1和2.0,因此是测试框架的不错选择。使用诸如NAnt之类的东西来制作单独的1.1和2.0版本并不难,然后自动运行NUnit测试。

0

我们遇到了这个问题,最后我们实现了一个“兼容性层”,我们为.NET v1.1和v2.0实现了一组接口和实用程序代码。

然后我们的安装程序为正确的版本规定了正确的代码。我们使用了NSIS(免费!),他们有你可以调用的函数来确定.NET版本。

相关问题