我目前正在尝试自动化.NET构建,目前遇到了障碍。在具有InstallShield 2016 Professional许可证的计算机上在Visual Studio中构建项目时,一切都很好。但是,在尝试使用MSBuild在具有InstallShield 2016 Standalone的计算机上构建VS解决方案时,生成的MSI没有所需的DLL或自定义操作。同时,尝试使用Iscmdbld构建.ism导致无法找到csproj的主要输出,即使在Devenv构建之后
答案 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中,我永远不会理解。
不幸的是,如果与上述内容无关,我对自定义操作问题没有任何答案。