无法在 Visual Studio 2010 安装程序项目中添加自定义操作

问题描述 投票:0回答:3

我将一个工作项目从 Visual Studio 2008 转换为 VS2010。 C++ 解决方案构建一个可执行文件和 3 个 DLL,以及一个 Windows 安装程序项目。

转换到VS2010后,我收到构建错误:

无法从项目输出组“主输出”构建名为“来自 xxxx 的主输出(活动)”的自定义操作,因为项目输出组没有密钥文件。

我删除并重新添加了输出组,然后尝试添加自定义操作。可执行输出未列为自定义操作的候选输出。然后我注意到,当我选择可执行文件 “Primary Output” 属性时,

KeyOutput
属性设置为(无)并呈灰色。

重新访问VS2008版本时,

KeyOutput
属性并没有灰显。我在MSDN上找到了错误信息,并进行了无用的修复:

删除自定义操作并将其替换为指向具有密钥文件的项目输出组的自定义操作。

显然,技术作家也不知道如何解决它。请记住原始版本可以正确运行并安装。我相信根本问题是为什么

KeyOutput
属性被禁用 - 但为什么呢? (查看“输出”时,它正确显示每个项目中的 EXE 或 DLL)。

c++ visual-studio-2010 installation
3个回答
3
投票

我遇到了类似的问题,我弄清楚了为什么安装项目找不到关键输出文件。

我的项目输出目录被定义为$(SolutionDir) in\$(Platform)。 SolutionDir 已经有一个尾部反斜杠,因此在路径中放置了一个双反斜杠。该项目可以正常构建,但安装项目无法解决关键输出。将输出设置为 $(SolutionDir)bin\$(Platform)\ 解决了该问题。


2
投票

经过进一步调查,我发现这是 Visual Studio 2010 中的一个错误。

如果您为项目指定的输出名称与项目本身的名称不同,则它将无法执行正确的操作。

要重现此情况,请更改

项目属性->链接器->常规->来自 $(OutDir)$(TargetName)$(TargetExt) 的输出文件类似于 $(OutDir)foobar.exe

然后,项目将 KeyOutput 值更改为空,并且不可用于安装中的自定义操作。除了使用默认的项目命名约定之外,没有其他解决方法。


1
投票

很晚才回答,但希望它能节省我在 VS 2010 上用头撞墙的 2 个小时(这是一个多么糟糕的软件——加载缓慢,每个 devenv 占用 300 兆工作内存,现在这个错误!!!!!!??????)这里是 - Roger Dunn 是正确的,它说是项目属性->链接器->常规->输出文件导致了问题 - 如果您有类似 $(OutDir)foobar.exe 的自定义操作 barfs ,如果您将其更改回 $ (OutDir)$(TargetName)$(TargetExt) 又可以了!

解决方法是将宏 $(TargetName) 更改为 foobar,然后如果您想要为 exe 自定义名称,则将用户 $(OutDir)$(TargetName)$(TargetExt) 更改为用户。

$(TargetName) 可以在 - 项目属性->配置属性->常规->TargetName 中更改。

但是这 VS 2010 真是浪费时间。

© www.soinside.com 2019 - 2024. All rights reserved.