我已按照此处的教程http://msdn.microsoft.com/en-us/library/ms185301.aspx生成了一个模板项目,该项目允许我使用向导替换代码中的参数。
这适用于我的所有C#项目,例如,如果我的模板中有以下内容:
using System.Runtime.Serialization;
using $customvariable$Definitions;
namespace $customvariable$Objects
{
/// <summary>
/// $customvariable$ Camera
/// </summary>
public class $customvariable$Camera
{
#region Constructor
/// <summary>
/// Instantiates a new instance of the $customvariable$Camera class
/// </summary>
public $customvariable$Camera() :
base()
{
}
#endregion
}
我可以将customvariable重命名为我想要的任何内容,并在生成的项目中生成。
BUT 如果我在可视化C ++项目中执行完全相同的操作,则自定义变量不会被替换。
我如何才能使其适用于C ++代码文件
答案 0 :(得分:1)
C ++使用不同的方法来替换模板值。不幸的是,语法与C#不同。一种可能的解决方案(尽管可能不是最好的)是拥有两个单独的模板文件并使用“语言”标志来确定使用哪个。查看差异here和here。
以下是C ++中的外观示例...
static AFX_EXTENSION_MODULE [!output PROJ_SOURCE]DLL = { NULL, NULL };
#ifdef _MANAGED
#pragma managed(push, off)
#endif
extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("[!output PROJ_SOURCE].DLL Initializing!\n");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule([!output PROJ_SOURCE]DLL, hInstance))
return 0;
// Saves the DLL instance handle for later use with ChangeResCl.
resHandle = hInstance;
在上面的代码中,使用“[!output PROJ_SOURCE]”在两个不同的位置替换dll的名称。