visual studio - 应将哪个winform项目文件打包到安装程序中




visual-studio winforms (2)

运行应用程序所需的所有文件都可以在 /bin/release 文件夹中找到,包括DLL和可执行文件本身。

但是,这确实假设您使用Visual Studio中的内置工具将这些库添加到项目中

编辑(感谢Lex Li):如果您尚未安装运行时文件(这些文件通常与.NET一起安装),则需要从 https://www.microsoft.com/net 安装它们

我想通过 Inno Setup 打包我的winform项目。 但是除了主要的可执行文件之外,它还必须指定其他所需的文件,并且项目文件夹中有许多文件。

那么需要哪些文件? .cs脚本重要吗? 或者只是/ bin / release /中的文件?


总的来说 :我喜欢 Tom Blodget的建议 来查找依赖关系和运行时。 以下是一些详细的技术选项,用于确定问题应用程序的运行情况。 匆忙组装。

清洁虚拟 :显然需要 Lex Li的建议 (上面评论你的问题)在一个干净的虚拟机上手动设置你的应用程序以进行 质量检查 测试, 并以“迭代的方式”确定 部署要求

检查清单 :仅供记录: 应用程序启动问题的通用检查列表 (由于某种原因有人投票,让我知道你在那里发现了什么错误?我是部署专家而不是编码器 - 它更像是一个“想法”列表,而不是一个真正的清单)。

更新 - 2018 9月

调试二进制文件 - 启动序列调试 :您可以在应用程序启动序列的早期插入一个消息框,并将调试二进制文件整合到您的设置中,安装它,然后在启动时将调试器附加到应用程序的消息框以便逐步启动码? (设置一个断点)。 现在你可以调试了,只要你的EXE开始了

  • 也许请查看这个 “附加调试器方法”的 好的 高级安装程序视频教程 。 它显示了自定义操作代码的相同方法。 启动应用程序的过程相同。 只需附加到消息框并设置断点即可。

  • 注意 :显然记得一旦你知道问题是什么就重新编译发布二进制文件 - 并重新发布。 调试二进制文件不可再发行 - 它们绑定到仅由MS SDK安装的调试dll。 普通PC不会(通常)拥有这些调试dll。

Visual Studio模块视图 :我已经看到它建议在 Visual Studio中 以调试模式运行。 以交互方式运行项目: Debug => Start Debugging ,然后执行: Debug => Windows => Modules ,以获取为应用程序运行所加载的内容的列表。 坦率地说,我不确定这是否为您提供了所有类型的依赖关系。 可以有许多不同的类型,如 Dependency Walker帮助文件中所述 。 我试图 在这个问题上挑选汉斯帕斯特的大脑:-) ,但它可能太详细了。

Dependency Walker :这是一个旧的Windows SDK工具。 它现在已经过时了 - 我认为自上次更新以来已经过去了10年。 这是旧的战马依赖,但对新的二进制文件不起作用。 它不支持 WinSxS依赖项(并排win32程序集) API-Sets

  • 我仍然用它来提醒自己“ 模块搜索顺序 ”。 打开工具: Options => Configure Module Search Order... Windows按照这样的搜索顺序定位文件/模块 - 以及不同OS版本之间的差异。
  • 它肯定是过时的,但它至少提醒你如何在Windows中扫描文件夹 - 每个Windows版本都不同 - 尤其是清单。

dumpbin :Windows SDK中的另一个老工具(在安装了Visual Studio的系统上搜索 %ProgramFiles(x86)% )。 这是一个命令行工具。 对于受虐狂:-)。 老实说,我不知道它是否具有对最新二进制文件的适当支持,但它似乎得到维护(与Dependency Walker不同)。

ProcMon (Sysinternals):这是人们在解决硬依赖问题时发誓的工具。 快速模拟样本 。 真正的交易 - 任何真正发生在幕后的小望远镜。 我并不擅长使用它,但是看一下输出的想法总是很有启发性。 缺少COM服务器注册等...

ProcessExplorer (Sysinternals): 请检查这个答案 。

Fuslogvw.exe Fuslogvw.exe 告诉你什么吗? (.NET程序集绑定失败)。

Dependencies.exe :也许你也可以尝试这个新的,开源重写的 Dependency Walker (上面提到的那个旧的SDK工具)部分在C#中完成:“ Dependencies.exe ”。 这个工具还没有完成,并没有Dependency Walker的所有功能(我看不到exe文件的任何分析功能),但它支持 API-Sets WinSxS依赖 - 或并排的Win32程序集(这是Dependency Walker遗漏的。 我没有足够的测试它真的推荐它 - 但它是开源的,因此可以检查。 I have contacted the author about an issue where the bundled peview.exe is identified as malware 作者很快回来解释 。 建议您在开始使用该应用程序之前删除peview.exe。

NDepend wikipedia ):恐怕我不使用的工具,但 请检查这个答案 (做检查)。

部署工具 :除Inno设置之外的 各种部署工具 ( 列表视图,仅限核心工具 )。

一些链接

。净





inno-setup