Visual studio 为什么Visual Studio 2019会在生成后删除引用的程序集?

Visual studio 为什么Visual Studio 2019会在生成后删除引用的程序集?,visual-studio,msbuild,Visual Studio,Msbuild,我有一个VisualStudio2019解决方案,是从其他有多个项目的人那里继承的。 我正试图建立一个特别的项目。 我有一个对“copy local”设置为true的外部程序集的引用 当我构建项目时,引用的程序集会被复制到输出文件夹,但随后会被删除 我知道它会被复制,因为我尝试使用后期生成事件“dir$(TargetDir)”,它显示了dll 知道为什么之后会被删除吗?问题是您使用了一些nuget软件包,如Costura.Fody,它可以将特定的外部程序集合并到主输出文件中,同时将其设置为Cop

我有一个VisualStudio2019解决方案,是从其他有多个项目的人那里继承的。 我正试图建立一个特别的项目。 我有一个对“copy local”设置为true的外部程序集的引用

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

我知道它会被复制,因为我尝试使用后期生成事件“dir$(TargetDir)”,它显示了dll


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

问题是您使用了一些nuget软件包,如
Costura.Fody
,它可以将特定的外部程序集合并到主输出文件中,同时将其设置为Copy Local True

因此请检查您的
FodyWeavers.xml
文件是否包含您的外部程序集

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

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

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

问题是由我的csproj文件中的以下行引起的:

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

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

您可以通过检查构建日志来诊断问题@确实是。是项目文件中名为Fody reference的工具。它删除目标目录中的dll。Fody使用IL编织重写dll。检查
FodyWeavers.xml
@GaryW,有关于此问题的更新吗?请检查我的回答是否有助于您处理此问题。如果有帮助,请不要忘记。如果没有,请随时通知我们:)