MSB3577:两个输出文件名解析为同一个输出路径:“路径”

此错误表示生成输出中存在重复文件名。

如果需要更多信息来诊断错误,首先启用诊断日志(使用 -verbosity:diag 命令行开关),然后使用完整的诊断输出检查 MSBuild 日志文件。 对于大型项目的更大输出日志,请考虑使用二进制日志(-bl 命令行开关)和 MSBuild 结构化日志查看器来更轻松地查看输出。

检查有问题的文件并试着确定多次生成该文件的原因 - 创建该文件的生成过程是怎样的? 你可以重命名这两个文件中的一个吗? 是否因为生成过程中存在重复步骤而多次生成相同的文件?

此错误发生在资源文件中,尤其是在 Visual Basic Windows 窗体项目中。 可以编辑项目文件以指定 ManifestResourceName 元数据,这将有助于 GenerateResource 任务为每个资源文件创建唯一的文件名。 下面的代码显示了一个简单的例子:

<EmbeddedResource Include="MyResources.resx">
  <ManifestResourceName>CustomName</ManifestResourceName>
</EmbeddedResource>

必须确保为 CustomName 指定的值对于每个生成的资源文件均不相同。

在 MSBuild 16.10 及更高版本中,可以使用 TargetPath 元数据来区分重复的路径名称。

<Content Include="Files\**">
  <Link>Files\%(Filename)%(Extension)</Link>
  <TargetPath>%(Filename)%(Extension)</TargetPath>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

无需添加扩展名;扩展名 .resources 会自动应用。