C++ 无法在Visual Studio 2010安装程序项目中添加自定义操作
我将一个工作项目从VisualStudio2008转换为VS2010。C++解决方案构建一个可执行文件和3个DLL,以及一个Windows安装程序Project。p> 转换到VS2010后,我从项目输出组“Primary Output”收到一个生成错误“无法生成名为“Primary Output from xxxx(Active)”的自定义操作,因为该项目输出组没有密钥文件。” 我删除并重新添加了输出组,然后尝试添加自定义操作。可执行输出未作为自定义操作的候选项列出。然后,当我选择可执行文件“主输出”属性时,我注意到“KeyOutput”属性被设置为(None)并灰显 重新访问VS2008版本时,KeyOutput属性未灰显。我在MSDN上发现了错误消息,并进行了无用的修复: “删除自定义操作,并将其替换为指向具有密钥文件的项目输出组的自定义操作。”C++ 无法在Visual Studio 2010安装程序项目中添加自定义操作,c++,visual-studio-2010,installation,C++,Visual Studio 2010,Installation,我将一个工作项目从VisualStudio2008转换为VS2010。C++解决方案构建一个可执行文件和3个DLL,以及一个Windows安装程序Project。p> 转换到VS2010后,我从项目输出组“Primary Output”收到一个生成错误“无法生成名为“Primary Output from xxxx(Active)”的自定义操作,因为该项目输出组没有密钥文件。” 我删除并重新添加了输出组,然后尝试添加自定义操作。可执行输出未作为自定义操作的候选项列出。然后,当我选择可执行文件“主
显然,这位科技作家也不知道如何修复它。请记住,原始版本工作正常,安装正确。我认为根本问题是为什么KeyOutput属性被禁用-但为什么?(查看“输出”时,它会正确显示每个项目中的exe或dll)经过进一步调查,我发现这是Visual Studio 2010中的一个错误 如果为项目指定的输出名称与项目本身的名称不同,则无法正确执行 要重现这一点,需要改变 项目属性->链接器->常规->从$(OutDir)$(TargetName)$(targetText)输出文件,类似于$(OutDir)foobar.exe
然后,项目将KeyOutput值更改为空,并且不可用于安装中的自定义操作。除了使用默认项目命名约定外,没有其他解决方法 我也遇到了类似的问题,我找到了安装项目找不到密钥输出文件的原因
我的项目输出目录被定义为$(SolutionDir)\bin\$(平台)。SolutionDir已经有一个尾随反斜杠,因此\bin在路径中放置了一个双反斜杠。该项目将构建良好,但安装项目无法解析关键输出。将输出设置为$(SolutionDir)bin\$(平台)\n解决了该问题 回答得很晚,但希望它能帮某人省下我用VS 2010(这是一个多么糟糕的软件,加载速度慢,每个开发占用300兆的工作内存,现在这个bug!!!)来了- Roger Dunn说得对,是项目属性->链接器->常规->输出文件导致了问题-如果您有类似$(OutDir)foobar.exe的自定义操作条,如果您将其更改回$(OutDir)$(TargetName)$(targetText),它将再次工作 解决方法是将宏$(TargetName)更改为foobar,然后将用户$(OutDir)$(TargetName)$(targetText)更改为exe的自定义名称 $(TargetName)可以在以下位置更改-项目属性->配置属性->常规->TargetName 但与2010年相比,这真是浪费时间