我正在为一组项目创建一个自动构建系统。大多数是C#和VB,但我们有一些VC ++。在构建开始执行一些自定义内容之前,我需要为所有项目提取AssemblyName属性。 C#和VB项目在.csproj和.vbproj文件中都有一个AssemblyName元素,我可以使用xml dom来抓取它们。 .vcxproj文件中没有等价物。仅通过查看项目文件(vcxproj)或项目中包含的文件,如何确定VC ++项目的AssemblyName是什么?编译器是否只使用包含主入口点的任何文件作为AssemblyName?例如Win32ConsoleApp1.cpp-> Win32ConsoleApp1.exe? 最佳答案 谢谢,那些元素不在我的.vcxproj中。也许您有一个较旧的.vcproj?无论如何,它确实导致我在导入到每个.vcxproj文件的Microsoft.Cpp.props文件中找到。其中有以下行: $(ProjectName)这对于检索最终将要生成的程序集的名称的目标没有好处,因为在运行时会扩展值$(ProjectName)。因此,我开始跟踪设置了ProjectName的情况。它位于Microsoft.Common.targets中,并设置为$(MSBuildProjectName)。再次对我没有用,因为它在运行时也会扩展。然后,我不得不拆解MSBuild.exe及其依赖项,最后找到Microsoft.Build.Evaluation.Evaluator类,将其设置为MSBuildProjectName。只是项目文件名减去扩展名。例如。 MyConsoleApp1.vcxproj-> MyConsoleApp1。我还做了一些实验,只需在Visual Studio中右键单击我的VC ++项目,然后选择“重命名”并保存该项目,便会使用输入的新值将一个新元素添加到名为的项目文件中。因此,基于所有这些,我要使用的逻辑是解析.vcxproj文件并查找元素。如果在里面,那就用它;如果不是的话,只需使用项目文件名减去扩展名即可。 10-01 13:06