将exe和dll打包为一个exe文件

通过Nuget安装Costura.Fody

公司项目需要支持.NET 4.0(使用VS2017),Costura.Fody库从3.2.1开始支持4.0,但是不能装最新的Fody,否则会提示:

Fody is only supported on MSBuild 16 and above. Current version: 15.

搜索之后发现,Fody库最高4.2.1版本可以支持15版本的MSBuild,所以目前的搭配是:

Costura.Fody库 3.2.1

Fody库 4.2.1

编译一切正常

注意:如果一开始就安装较低版本的Costura.Fody,可能会有和FodyWeavers.xml有关的错误,参考这里:https://www.cnblogs.com/danvy/p/11164271.html

建议是先安装最新版本的Costura.Fody,然后将版本降到合适的搭配,这样可以就可以不用处理FodyWeavers.xml有关的错误了。

如果还有警告的话,FodyWeavers.xml已经产生在本地了,只需要把它加入项目即可。

 FodyWeavers.xml的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <Costura />
</Weavers>

注意2:所有引用文件的复制本地属性必须设为True,否则会有问题,猜测应该是Costura应该是在编译成功后会对文件进行打包,这时缺少文件就会出问题。

原文地址:https://www.cnblogs.com/s5689412/p/11330507.html