C# .NET核心自包含发布引用-如何删除未使用的?

C# .NET核心自包含发布引用-如何删除未使用的?,c#,.net-core,C#,.net Core,我是.NET核心的新手。我已经发布了一个运行简单TCP服务器的测试程序的自包含版本,到linux-x64。然而,当我发布它时,结果是整个SDK的70MB。我可以删除它们中的许多,以及它们在*.deps.json中的引用,而不会让程序崩溃,所以我觉得有很多未使用的引用。是否有更精简的工具或不同的部署方法 这样做的原因是我想为一块只有60MB空间的电路板提供一种替代部署方法——删除Mono并使用本机.NET核心程序将非常适合 多谢各位 编辑:这个问题不是重复的,因为Resharper的“优化引用”在

我是.NET核心的新手。我已经发布了一个运行简单TCP服务器的测试程序的自包含版本,到
linux-x64
。然而,当我发布它时,结果是整个SDK的70MB。我可以删除它们中的许多,以及它们在
*.deps.json
中的引用,而不会让程序崩溃,所以我觉得有很多未使用的引用。是否有更精简的工具或不同的部署方法

这样做的原因是我想为一块只有60MB空间的电路板提供一种替代部署方法——删除Mono并使用本机.NET核心程序将非常适合

多谢各位

编辑:这个问题不是重复的,因为Resharper的“优化引用”在.NET核心项目上不可用。另外,其他VS扩展似乎只适用于VS2011


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

据我所知,没有标准的解决方案。但是有一些解决办法

第一个是VisualStudio扩展,它删除了未使用的引用,它调用了,第二个是。Resgharper是一个复杂的扩展,它具有此功能和许多其他功能


下面是关于重拾器工作原理的小说明:

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


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

没有删除包,而是删除了未使用的代码:在
中。NET Core 3.1
您可以在发布命令中使用
-p:PublishTrimmed=true
参数:

dotnet publish --configuration Release --runtime win81-x64 -p:PublishTrimmed=true
在我的例子中,这大大减少了
publish
文件夹的大小(大约三分之一)

信息可在此处找到:

但是请注意您在输出中看到的警告:
优化程序集的大小,这可能会改变应用程序的行为。请确保在发布后进行测试。见:https://aka.ms/dotnet-illink

目前唯一的官方工具是.NET IL链接器的可能副本。NETCore3.0本应提供一种新工具,但尚未完全公开。