如何在测试和生产代码中使用不同的C ++文件?

时间:2017-02-07 08:56:19

标签: visual-studio c++-cli conditional-compilation csproj ifdefine

请考虑以下场景:我有一个C ++文件,我们从C#调用该C ++代码。在C ++文件中,有一个标志

#define HasFeature

我希望在生产代码中未定义此标志,并且只在我的测试代码中我想激活它们。在测试完成后,我希望它再次未定义。

我知道它是一个编译时功能,在运行时编辑它是不可能的。 由于其他原因,我无法将#define转换为类成员。

我可以想到添加两个文件的一件事,其中一个是定义了标志,其中一个标志是未定义的,在test.proj中使用带有标志定义的文件,而production.proj使用带有标志的文件未定义。这可能在Visual Studio中吗?如果是这样我该怎么办? (也许在csproj等中使用了一些功能?)

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在构建中使用命令行参数定义标志:

/p:DefineConstants="HasFeature"

通过这种方式,您只需在测试版本中设置此项,并在生产构建定义中删除此参数。