2010-01-20 68 views
1

我们的产品包含一些模块,分布在多个visual studio解决方案中,并使用C++和C#。我想定义产品名称并将其用作默认文件夹位置,注册表项等的一部分。产品名称define for visual C++和c#

在一个地方定义此产品名称的最简单方法是什么?如果我必须为C++和C#使用不同的方法,您会为他们每个人建议什么?

回答

0

这是解决方案,我会尝试实施:

C++和C#将各自拥有自己的函数来获取产品名称,这些功能将具有默认名称。

默认名称可以被环境变量“PRODUCTNAME”覆盖,这样我们就可以通过修改环境变量轻松地在不同的名称下构建我们的软件。我的C++解决方案编译一个包含(除其他外)功能的DLL:
GetProductName(char * pName,int iSize);
所以产品名称现在只在一个地方定义。

+0

只需更明确:C#项目使用C++ DLL来获取产品名称。 – Warpin 2010-01-21 23:08:34

0

据微软称,它看起来像你应该能够内把一切都成1倍的溶液,然后让子解决方案:

MSDN Structuring Solutions and Projects

编辑:文章是Team Foundation Server的,所以我猜你不一定这样做。

+0

这里没有团队基金会。我们正在使用多解决方案。 – Warpin 2010-01-20 17:39:33

+0

没有通读整篇文章,但我认为它只是谈论在一个解决方案中有不同的“项目”类型。如果是这种情况,那么你可以在VS Professional中做到这一点。一旦你这样做了,你通常可以在项目设置中使用“$(SolutionName)”来获取解决方案的名称,然后可以使用它作为产品名称 – 2010-01-21 23:30:05

0

我不一定会说什么是最简单的,但我确实知道我们在这里完成的工作合理。

对于C++项目,我们有一个包含的通用头文件 - 它定义了应用程序使用的所有常见的非本地化字符串(ProductNames,CompanyName,Version,Registry Keys,File Prefix/Extensions等) 。单个项目只包含并引用这些定义。我使用的是专门定义的而不是常量,因为这样我可以更改所有版本资源以引用那些没有任何问题的相同定义(实际上,所有项目的.rc文件都包含相同的version.rc以保证一致性)。

对于我们的C#项目,我使用一个简单的类来包含由c#项目引用的常量。

不幸的是,这留下了两个地方进行维护,但在这一点上它运行得很好,我们很少需要更新那些我们不需要提出更加集成的方法的定义/常量。

我会很乐意听取其他办法...