在生成.net core 3.0程序时不包含nuget库

在.net core 3.0中,默认的生成行为有了两个变化,一个是默认生成可执行文件,另一个是会复制依赖的Nuget项

前一个变化会默认生成可执行的exe,用起来更加方便了。另一个变化可能是为了减少复制到别的机器上不能运行的困惑而修改的。但这个变化会在程序目录带来一大堆依赖的dll文件, 下图演示我只引用的一个MongoDB.Driver库的时候,就额外带了了5个dll,尤其是当项目一大的时候,要想在引入的几十个dll中找到几个项目的dll是一件比较麻烦的事情。

而在.net core 2.x的时候,则只会生成项目相关的dll,也不影响exe的执行(拷贝到别的机器会因为缺少nuget的dll无法运行),看起来要清爽得多。

查了一下相关文档,可以恢复成以前的行为:在csproj文件中的PropertyGroup组中增加CopyLocalLockFileAssemblies配置,设置为false即可。

<PropertyGroup>
    <CopyLocalLockFileAssemblies>false</CopyLocalLockFileAssemblies>
</PropertyGroup>

设置了之后,就有一个新的问题了,如果发布的时候需要哪些依赖的nuget的dll该怎么办呢?和.net core 2.x时候一样,使用dotnet publish发布即可。

原文地址:https://www.cnblogs.com/TianFang/p/11560532.html