我是.NET Core的新手。我已将运行简单TCP服务器的测试程序的独立版本发布到linux-x64
。但是,当我发布它时,结果是整个SDK的70MB。我可以删除其中的许多内容以及它们在*.deps.json
中的引用,而不会导致程序崩溃,因此我觉得有很多未使用的引用。是否有更精简的工具或其他部署方法?
原因是我想为只有60MB空间的电路板提供另一种部署方法-删除Mono并使用本机.NET Core程序很合适。
谢谢。
编辑:由于Resharper的“优化参考”在.NET Core项目中不可用,因此该问题不再重复。另外,其他VS扩展似乎只能在VS2011上使用。
Edit2:我已经使用.NET Core的ILLinker解决了这个问题。
答案 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