使用MSBuild使用InstallShield Pro Project构建Visual Studio解决方案时缺少DLL和自定义操作

时间:2017-04-26 20:58:29

标签: c# msbuild installshield

我目前正在尝试自动化.NET构建,目前遇到了障碍。在具有InstallShield 2016 Professional许可证的计算机上在Visual Studio中构建项目时,一切都很好。但是,在尝试使用MSBuild在具有InstallShield 2016 Standalone的计算机上构建VS解决方案时,生成的MSI没有所需的DLL或自定义操作。同时,尝试使用Iscmdbld构建.ism导致无法找到csproj的主要输出,即使在Devenv构建之后

2 个答案:

答案 0 :(得分:0)

如果您正在使用项目输出组(如主要输出),则您的选择是有限的。您必须使用VS集成构建(通过devenv)或MSBuild; iscmdbld无法解析项目输出组。

您的另一种选择是从项目输出组更改为使用不需要Visual Studio知识的静态(或动态)文件链接。我倾向于更喜欢静态链接,因为很容易准确地告诉项目中的内容。更重要的是,使用静态链接时,您无法以静默方式丢失先前添加的文件,因此更容易避免可能破坏组件或升级规则。

答案 1 :(得分:0)

希望这不是太老了,无法使用。我知道,InstallShield绝对是最糟糕的。

如果您在纯文本编辑器中编辑.isproj,您会发现它只是一个常规的MSBuild脚本。你会发现有很多被注释掉的东西可以解释(很差)你可以添加的东西。找到包含“ProjectReference items”说明的ItemGroup,并添加以下格式的节点:

<!-- The ProjectReference items refer to any Visual Studio solutions you want to automatically probe for Project Output Groups.  -->
<ProjectReference Include="..\Path\To\Your\Proj.csproj">
   <Project>{2d3f37cc-0e93-4673-a3df-59c556185f71}</Project>
   <Name>Name Of Project As It Appears in VS</Name>
</ProjectReference>

将以上内容添加到我的所有.isproj文件后,我的自动构建工作正常。为什么InstallShield上的白痴永远不适合将这个功能添加到UI中,我永远不会理解。

不幸的是,如果与上述内容无关,我对自定义操作问题没有任何答案。