2010-01-20 40 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#項目引用的常量。

不幸的是,這留下了兩個地方進行維護,但在這一點上它運行得很好,我們很少需要更新那些我們不需要提出更加集成的方法的定義/常量。

我會很樂意聽取其他辦法...