【WinForm】使用Costura.Fody打包编译成可独立运行的桌面程序

文章开场白免了,开始切入正题。

新建项目

  1. 在建项目的时候要注意,选择Windows 窗体应用(.NET Framework),然后打开
    在这里插入图片描述

安装包

  1. 在解决方案资源管理器中,选择刚才的项目名,鼠标右键找到并打开管理NuGet包,然后在浏览选项卡里,输入一个Costura.Fody并查找,有就点安装,安装前需要注意选择支持的对应版本依赖项
    在这里插入图片描述

静态编译

  1. 接下来,重新编译项目,没报错的话,项目里会出现一个隐藏的文件FodyWeavers.xml,这样就是可以了,这是Costura的配置文件,参考官方的文档修改吧,能按自己设置的条件编译程序,一般情况下不用管,使用默认配置即可
    在这里插入图片描述

如果没有看到FodyWeavers.xml文件,那就自己手动添加

添加文件步骤

  • 选择你的项目,单击鼠标右键,
  • 选择“添加” → “新建项” → 找到“ XML文件 ”,
  • 在新建XML文件名输入框填入“ FodyWeavers. xml “,
  • 然后把如下内容复制粘贴到新建的文件内容里
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
	<Costura />
</Weavers>
  1. 最后,确定一下是否会打包编译成可独立运行的桌面程序,打开项目里的目录bin/Debug/或者bin/Release/下看看,如下图所示,所有依赖的dll文件都打包在一个exe可执行程序里
    在这里插入图片描述

  2. 接着,清理一下,然后重新生成,再看看输出文件夹里,是否减少了dll依赖文件,

遇到问题

看到有些dll文件依旧存在?

  1. 创建一两个文件夹,Costura64或者Costura32,根据你编译的运行环境选择,把生成的依赖文件复制那文件夹里面
    在这里插入图片描述

  2. 再把复制到的一些文件,设置包括到项目中,然后修改属性生成操作为嵌入的资源
    在这里插入图片描述

  3. 重新编译后,可以发现生成的exe可执行程序的文件大小,是否变大了,

接下来,删除除exe可执行程序之外的一些依赖文件,

  1. 再点击运行exe可执行程序试试,没问题就OK

收工

到此结束,一个可执行的桌面程序绿色版本就这样弄出来了,

无需安装,直接运行,方便分享程序给他人使用。

请添加图片描述

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: Winform 是一个应用程序框架,允许开发者在 Microsoft Windows 平台上编写桌面应用程序。Windows.winmd 是一个 Windows 运行时组件的元数据文件,包含了 Windows 运行时 API 的声明。Winform 引用了 Windows.winmd 可以帮助开发者访问并使用 Windows 运行时 API。 Windows 运行时 API 是 Windows 应用程序开发的基础,提供了许多功能,如文件 I/O、网络通信、设备管理和用户界面等。Winform 应用程序通常需要与这些功能进行交互,使用 Windows.winmd 可以确保在使用这些功能时可以获得正确的接口,平滑进行开发工作。 当 Winform 引用Windows.winmd 时,开发者需要注意以下几点: 1. Windows.winmd 是一个元数据文件,只包含 API 的声明,不包含实现或代码。因此,Winform应用程序需要运行在包含这些实现的 Windows 运行时环境上。 2. 引用 Windows.winmd 的 Winform 应用程序必须使用 .NET 4.5 及以上版本。 3. 在应用程序使用 Windows 运行时 API 的同时,也需要考虑应用程序运行时版本。例如,某些 API 对于 Windows 8 及以上版本可用,但对于较早的版本则无法使用。 4. 使用 Windows 运行时 API 时,需要确保应用程序与 API 的交互线程安全。某些 API 要求在主线程上调用,而另一些 API 则必须在辅助线程上调用。 总之,引用 Windows.winmd 可以帮助 Winform 应用程序开发者访问 Windows 运行时 API,从而充分利用 Windows 平台的功能。但是,开发者需要注意一些限制和注意事项,以确保应用程序的稳定性和可靠性。 ### 回答2: winform是微软开发的一个用于构建Windows桌面应用程序的框架,而windows.winmd是Windows运行时组件的一部分,可用于访问Windows API和新一代应用程序平台的功能模块。 通过在winform应用程序中引用windows.winmd,开发人员可以访问Windows API和新平台功能模块,从而增强应用程序的功能和性能。例如,使用windows.winmd,WinForm应用程序可以使用Windows 8中引入的新用户界面控件,例如Charms Bar、应用程序栏和手势支持,从而提高用户体验。 另外,通过将winform应用程序与windows.winmd集成,开发人员可以实现通过代码实现跨平台开发,并使用一种代码库为多个不同的设备和操作系统提供支持。这样做可以极大地提高开发人员的生产力和减少开发成本。 综上所述,通过在winform应用程序中引用windows.winmd,开发人员可以获得访问各种Windows API和新平台功能模块的能力,提高应用程序的功能和性能,以及实现跨平台开发的目标。 ### 回答3: WinForm是微软官方推出的一种可视化窗体开发工具,它允许开发人员在Windows操作系统上创建桌面应用程序。而Windows.winmd则是Windows Runtime metadata的缩写,是一种用于描述Windows Runtime API的元数据格式,包含API类型、类成员、接口等信息。 在使用WinForm开发桌面应用程序时,我们常常需要调用Windows Runtime API来实现一些功能,此时就需要引用Windows.winmd。具体来说,需要在项目的引用中添加对Windows.winmd的引用,然后在代码中使用“using Windows.Foundation;”等命名空间来访问Windows Runtime API。 同时,需要注意的是,WinForm与Windows Runtime API之间有一定的兼容性问题。由于WinForm是基于传统的Win32 API开发的,而Windows Runtime API则是基于COM对象的设计,因此它们之间的数据类型、异步操作等特性存在差异。因此,在使用Windows Runtime API时需要格外注意这些差异,并进行适当的转换和处理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA远方

谢谢!收到你的爱╮(╯▽╰)╭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值