如何在没有 app.dll 和 app.runtimeconfig.json 的情况下运行 WPF .NET3.1 应用程序
Posted
技术标签:
【中文标题】如何在没有 app.dll 和 app.runtimeconfig.json 的情况下运行 WPF .NET3.1 应用程序【英文标题】:How do I run a WPF .NET3.1 app without app.dll and app.runtimeconfig.json 【发布时间】:2022-01-11 08:37:14 【问题描述】:具体来说,在 WPF .NET Core 3.1 应用程序上使用 Visual Studio Community 2019,如何在没有 app.dll 和 app.runtimeconfig.json 的情况下使用 bin/debug 文件夹中的 exe 文件。
基本上我只想将 app.exe 文件从调试文件夹传递给也在 Windows 10 和 Windows Server 2012 R2(AWS EC2 窗口)上运行的应用程序。
我想使用调试 app.exe 的原因是它小于 200kb,而作为单个修剪文件发布,它给了我一个 ~180mb 的文件......由于某种原因它无论如何都不会运行?
在How to build App without App.runtimeconfig.json? 之后,我在发布时给了我一个无法运行的 180mb 文件。 关注.Net whole application as a single .exe file? 使我的 app.dll 增加了 20kb,我仍然需要它。
是否有可能做到这一点?如果是这样,我如何才能在没有调试文件夹中的任何其他文件的情况下仅分发
编辑:该应用程序实际上并没有完成,它所拥有的基本上是一个带有 xaml 的空 cs 文件,其中包含一些组件(文本块、文本框、按钮、堆栈、数据网格等)这个结果如何在一个 180mb 的已发布文件中,我不知道。我也是 WPF 的新手,刚从 Winforms 来,我可以轻松地分发调试 exe 文件并让它在任何地方运行。
【问题讨论】:
【参考方案1】:您已经创建了包含所有 .NET 库的独立构建。这就是为什么生成的构建为 180MB。
检查这个:One Click
【讨论】:
我查看了发布设置,确实将部署选项设置为独立的。当我将它设置为框架相关时,它给了我一个实际工作的 200kb 文件,而不是一个没有工作的 180mb 文件。此外,一个 exe 文件可以在没有任何 dll 或配置文件的情况下运行和工作。但是你有答案吗,是否可以用调试 exe 文件完成类似的事情?【参考方案2】:依赖于框架的部署和自包含部署之间的主要区别在于,前者要求您在运行应用之前预安装 .NET Core 运行时。
在自包含部署中,您的应用包含运行时,这就是文件要大得多的原因。
请参考docs了解更多关于两种发布模式的区别和优缺点的信息。
要发布面向 .NET Core 3.1 并在 Visual Studio 中使用WPF Application
模板创建的应用,请在解决方案资源管理器中右键单击该应用,然后选择“发布...”并选择“文件夹”作为目标。
然后,您可以更改部署模式设置,具体取决于您是否需要依赖于框架(较小)或自包含(较大)的输出。
如果您选择自包含,还有一个额外的“生成单个文件”选项,您可以勾选该选项以生成一个可以 x-copy 部署到另一台计算机的 .exe
文件。确保复制发布文件夹的内容(而不是构建文件夹的内容)。
【讨论】:
debug文件夹中的exe文件有没有办法发生类似的事情?到目前为止,我在这里得到的 2 个答案似乎掩盖了这个问题,并直接解释或指出了发布发生的事情。也没有真正解释发布......(并且还掩饰了为什么独立的 exe 甚至不起作用,但我不介意,因为我不会处理 180mb 文件,无论它是否适用于你好世界应用程序)。 调试文件夹中的 exe 文件不是可以/应该部署到另一台机器的工件。正如我所提到的,重要的是发布文件夹的内容。那你的问题到底是什么? 你说得对,我想我的实际问题是被回答的标题。谢谢你。我将研究 Debug vs Release vs Publish。以上是关于如何在没有 app.dll 和 app.runtimeconfig.json 的情况下运行 WPF .NET3.1 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
CA1824:使用 NeutralResourcesLanguageAttribute 标记程序集(非 Web 应用程序的 App_GlobalResources.dll)