对于 Visual Studio 项目命名,这既是一个问题,也是一个“提示”。
我在 VS 2010 中构建了一个 ATL/COM 项目,当我运行Add --> Class --> ATL Simple Object向导来创建类 Foo 时,只创建了 Foo.rgs 文件和预期的 Foo.cpp和 Foo.h 文件没有出现。
经过几次尝试使向导工作的变体(检查了不同的选项等等),我仍然没有成功。没有错误消息,除了输出中的“无源文件”之外,没有任何迹象表明发生了故障。
在试图找到“为什么会这样”的答案的过程中,我遇到了一个提示,即需要使用 ProjectName.ClassName 手动填写相关项目和类的 ProgID 字段。当我尝试输入项目名称 (Some-Project) 时,向导抱怨连字符在该字段中是“非法字符”。
Web 搜索和关于“为什么 ATL 向导不会生成文件”的变体搜索在这里也是空的。
因此,猜测 ProgID 字段中的“不允许使用破折号”可能会产生进一步的影响,我着手将项目名称、文件名、目录名称等中的所有破折号更改为下划线,看看会有什么影响。在整个项目中,“Some-Project”变成了“Some_Project”,而“Random-Module.*”变成了“Random_Module.*”。
将所有破折号/连字符都转换为下划线后,向导可以正确运行,并且所有预期的文件都神奇地出现了,其中包括所有必需的 COM/ATL 管道材料。
所以 。. .
1)知道为什么名称中带有破折号的项目是“合法的”,但破折号会破坏向导吗?
2) 不管是什么原因,我建议不要在 Visual Studio 项目名称中使用破折号/连字符。