.NET Core自包含发布参考-如何删除未使用的?

时间:2018-11-29 17:25:01

标签: c# .net-core

我是.NET Core的新手。我已将运行简单TCP服务器的测试程序的独立版本发布到linux-x64。但是,当我发布它时,结果是整个SDK的70MB。我可以删除其中的许多内容以及它们在*.deps.json中的引用,而不会导致程序崩溃,因此我觉得有很多未使用的引用。是否有更精简的工具或其他部署方法?

原因是我想为只有60MB空间的电路板提供另一种部署方法-删除Mono并使用本机.NET Core程序很合适。

谢谢。

编辑:由于Resharper的“优化参考”在.NET Core项目中不可用,因此该问题不再重复。另外,其他VS扩展似乎只能在VS2011上使用。

Edit2:我已经使用.NET Core的ILLinker解决了这个问题。

3 个答案:

答案 0 :(得分:0)

据我所知,目前尚无标准解决方案。但是有一些解决方案!

第一个是Visual Studio Extension,它删除了未使用的引用,称为Reference Assistant,第二个是ReSharper。 Resgharper是具有此功能和许多其他功能的复杂扩展。

以下是有关小工具的说明:Remove Unused References With Reshaprer

答案 1 :(得分:0)

我找到了解决问题的方法:使用ILLinker和here提供的说明。

它不仅删除未使用的DLL,而且删除这些DLL中的无效代码。最初我没有使它起作用,但是那篇文章起作用了。

答案 2 :(得分:0)

不删除软件包而是删除未使用的代码:在.NET Core 3.1中,可以将-p:PublishTrimmed=true参数与发布命令一起使用:

dotnet publish --configuration Release --runtime win81-x64 -p:PublishTrimmed=true

就我而言,这大大减少了publish文件夹的大小(大约三分之一)。

可在此处找到信息:https://github.com/mono/linker/blob/master/docs/illink-tasks.md

但是请注意您在输出中看到的警告:Optimizing assemblies for size, which may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink

相关问题