Msbuild 已忽略旧项目格式的PackageReference条件

Msbuild 已忽略旧项目格式的PackageReference条件,msbuild,conditional-statements,itemgroup,packagereference,Msbuild,Conditional Statements,Itemgroup,Packagereference,我正试图通过使用Directory.Builds.props/Directory.Build.targets文件来集中一些项目配置。不幸的是,我们混合了新旧(sdk风格)项目格式。由于新格式中没有某些功能,因此并非所有项目都可以转换为新格式 我遇到的问题是,我想让我们所有的测试项目自动引用某些nuget包。对于新格式的项目,这很好。但是,旧格式的项目似乎忽略了我指定的PackageReference的任何条件。我在这种情况下使用什么似乎并不重要 下面是一个非常简单的Directory.Build

我正试图通过使用Directory.Builds.props/Directory.Build.targets文件来集中一些项目配置。不幸的是,我们混合了新旧(sdk风格)项目格式。由于新格式中没有某些功能,因此并非所有项目都可以转换为新格式

我遇到的问题是,我想让我们所有的测试项目自动引用某些nuget包。对于新格式的项目,这很好。但是,旧格式的项目似乎忽略了我指定的PackageReference的任何条件。我在这种情况下使用什么似乎并不重要

下面是一个非常简单的Directory.Build.Targets文件的示例:


在这种情况下,我不应该在任何项目中看到Moq包。 对于所有采用旧格式的项目,无论如何,都会包含该文件

我还尝试在以下情况下使用该条件:

  • 项目组本身
  • 选择/When块
另一方面,对属性组或属性设置条件会按预期工作

我没有看到文档中提到ItemGroup或PackageReference不支持条件。 有什么我遗漏的吗


谢谢

我不相信非SDK项目支持
PackageReference
;我怀疑不管您指定了什么条件,他们都被忽略了。检查与项目文件位于同一目录中的
packages.config
文件——如果我没有说错,它就存在并引用了有问题的包。

非SDK项目不支持PackageReference。这不是这些项目的默认设置。我们所有的项目都使用PackageReference,没有package.config文件。我的错误。感谢您确认没有
packages.config
。我被搁置了。考虑使用优秀的开源MSBudio二进制和结构化日志查看器()来查看是否可以添加该包引用。我尝试调查日志文件,但没有运气。我找不到有关此PackageReference来源的任何信息。Bummer。恐怕我没钱了。