【发布时间】:2021-12-24 21:27:19
【问题描述】:
我使用 net5 在 Windows 11 上构建了一个小型 C# windows 窗体项目。它在 Vstudio 2019 最新版(v16.11.8)下的调试模式下运行良好。如果有帮助,“dotnet --list-sdks”命令会报告 .NET v5.0.404 和 v6.0.101 都已安装。“dotnet --list-runtimes”报告运行时 NETCore.App 3.1.22、5.0。 13 和 6.0.1 以及 WindowsDesktop.App 版本 3.1.22、5.0.13 和 6.0.1 已安装。
当我构建应用程序时,我使用构建后事件将文件复制到另一个文件夹,在该文件夹中双击 .exe 文件以运行表单应用程序。但是双击总是告诉我要运行我需要安装“.NET”的应用程序(确切地说,没有其他信息)。你想现在下载吗?我单击是,弹出对话框消失,没有任何反应。
我首先将 .exe 复制到目标文件夹,当失败时,我也复制了 json 配置文件、DLL 和 .pdb 文件。但是,仍然没有幸福。
我一定错过了一些简单的东西,因为该应用在 vstudio 下运行良好。
我将 Debug/net5.0-windows 文件夹的内容与我的目标文件夹进行了比较。 Debug 文件夹有 44 个其他 DLL 和十几个语言包。我怀疑我的 .exe 应用程序由于某种原因无法找到所有这些 DLL。由于安装了所有 SDK 和运行时,它应该可以找到它们。但我对如何告诉 .exe 文件查找和使用所有已安装的 SDK 和运行时了解不够。
谁能告诉我我做错了什么以及如何让导出的文件使用已安装的运行时运行?谢谢。
【问题讨论】:
-
谢谢!我对测试文件夹进行了发布操作,并将其复制到所有 40 或 50 个依赖文件中。哇。不像框架 4.8,我只需要复制我的单个可执行文件。一个问题,我没有在任何其他机器上部署这个 exe;它只会在我的开发机器上运行。有什么办法可以只复制可执行文件并让它在其他地方找到已经安装的文件?谢谢
-
在阅读了更多关于 dotnet 发布的内容后,我发现发布的输出将始终包含所有应用程序依赖项。唯一的选择是是否包含整个运行时程序集集(--自包含与否)。再次感谢您帮助我找到答案。
标签: c# visual-studio-2019 .net-5 windows-forms-core