我的源代码需要支持 .NET 版本 1.1 和 2.0 ...我如何测试不同的版本以及处理这种情况的最佳方法是什么。

我想知道是否应该将两部分代码内联,放在单独的类、方法等中。你怎么认为?

有帮助吗?

解决方案

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

我将使用明确指示您所针对的 .NET 版本(例如 NET11 和 NET20)的符号,然后将相关代码包装如下:

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

这样做的原因而不是简单的 if/else 是为了防止有人忘记定义符号而提供额外的保护层。

话虽如此,您应该真正深入了解您想要/需要这样做的原因的核心。

其他提示

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

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

单位 支持 1.1 和 2.0,因此是测试框架的不错选择。使用类似的东西并不太难 南安特 分别构建 1.1 和 2.0,然后自动运行 NUnit 测试。

我会问为什么你必须维护两个代码库的问题,如果有机会的话我会选择一个并使用它。

尝试使两个代码库与更改数量和更改类型保持同步将非常复杂,并且为任一版本构建的构建过程也将非常复杂。

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

然后我们的安装人员为正确的版本制定了正确的代码。我们用了 国家信息安全局 (免费!),并且它们具有您可以调用以确定 .NET 版本的函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top