为什么 Visual Studio 2019 会在构建后删除我引用的程序集?

Why does Visual Studio 2019 deletes my referenced assemblies after the build?

我有一个 Visual Studio 2019 年的解决方案,它是从其他拥有多个项目的人那里继承来的。 我正在尝试构建其中一个项目。 我引用了一个“复制本地”设置为 true 的外部程序集。

当我构建我的项目时,我引用的程序集被复制到输出文件夹,但随后被删除。

我知道它被复制了,因为我尝试使用 post 构建事件“dir $(TargetDir)”并且它显示了 dll。

知道为什么之后会被删除吗?

问题是您使用了一些像 Costura.Fody 这样的 nuget 包,当它被设置为 Copy Local True[=38= 时,它可以将您的特定外部程序集合并到主输出文件中].

所以请检查您的 FodyWeavers.xml 文件是否包含 any merge operation 外部程序集。

在我这边,我有一个名为 ClassLibrary22.dll 的外部程序集,并将其设置为 CopyLocaltrue

并将这些添加到 FodyWeavers.xml 文件中:

因此程序集 ClassLibrary22.dll 将合并到主项目 exedll 输出文件中,并且不存在于输出文件夹下。 这就是原因。

问题是由我的 csproj 文件中的这些行引起的:

<Target AfterTargets="AfterBuild;NonWinFodyTarget" Name="CleanReferenceCopyLocalPaths">
    <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
  </Target>

解决方案是使用 Fody 编织组件。 我已经删除了编织,但是 csproj 文件中的这一行是使用 Fody 遗留下来的。