You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Directory.Build.props仅为Test文件夹内的C#测试项目添加指定NuGet包

为Test文件夹内的C#项目单独添加NuGet包配置

你可以通过项目目录路径匹配的条件,在Directory.Build.props中为Test文件夹下的C#项目单独引入xunit和Moq包,具体配置如下:

<Project>
  <!-- 原有StyleCop.Analyzers配置 -->
  <ItemGroup>
    <PackageReference 
      Include="StyleCop.Analyzers" 
      Version="1.2.0-beta.435"
      PrivateAssets="all" 
      Condition="$(MSBuildProjectExtension) == '.csproj'" 
    />
  </ItemGroup>

  <!-- 仅为Test文件夹内的csproj添加xunit和Moq -->
  <ItemGroup>
    <!-- xunit测试框架及运行器 -->
    <PackageReference 
      Include="xunit" 
      Version="2.6.6"
      PrivateAssets="all" 
      Condition="$(MSBuildProjectExtension) == '.csproj' And $(MSBuildProjectDirectory) Contains '\Test\'" 
    />
    <PackageReference 
      Include="xunit.runner.visualstudio" 
      Version="2.5.6"
      PrivateAssets="all" 
      Condition="$(MSBuildProjectExtension) == '.csproj' And $(MSBuildProjectDirectory) Contains '\Test\'" 
    />
    <!-- Moq模拟框架 -->
    <PackageReference 
      Include="Moq" 
      Version="4.20.70"
      PrivateAssets="all" 
      Condition="$(MSBuildProjectExtension) == '.csproj' And $(MSBuildProjectDirectory) Contains '\Test\'" 
    />
  </ItemGroup>
</Project>

关键说明:

  • $(MSBuildProjectDirectory)代表当前项目文件所在的物理目录路径,通过Contains '\Test\''可判断项目是否位于Test文件夹(或其子目录)下
  • 如果Test文件夹直接在解决方案根目录下,也可使用更精确的匹配条件:
    Condition="$(MSBuildProjectExtension) == '.csproj' And $(MSBuildProjectDirectory.StartsWith('$(SolutionDir)Test\'))"
    
    注意:$(SolutionDir)默认会以斜杠结尾,拼接路径时需避免重复斜杠问题。

内容的提问来源于stack exchange,提问作者chenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:10:34