如何通过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
相关产品推荐
相关产品推荐

