项目对.netstandard项目的引用,不包括依赖项

时间:2017-06-01 13:07:38

标签: .net .net-core visual-studio-2017 .net-standard

我在net462项目的项目引用netstandard项目时遇到了一些问题。

当我在MyTests中运行测试时,它抱怨缺少dll,那些是来自MyLogging NuGet引用(SeriLog)的dll。我不希望MyTests对MyLogging进行NuGet引用,因为它违背了它的目的,我也不想将测试包含在MyLogging中。有没有办法让项目引用自动包含所有子引用?我宁愿不在MyTests中包含对MyLogging依赖项的反馈,因为我对测试方法不感兴趣,只是它正确地记录到基于配置的任何内容。在测试项目中包含MyLogging依赖项正在泄漏实现,如果我决定以不同的方式登录,我将不得不维护引用。

MyLogging

  • target netstandard1.3
  • 发布为NuGet以供其他项目使用
  • 依赖关系(此处为SeriLog)被引用为NuGet包

csproj文件。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.3</TargetFramework>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="1.1.2" />
    <PackageReference Include="Serilog" Version="2.4.0" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="1.4.0" />
    <PackageReference Include="Serilog.Sinks.ColoredConsole" Version="2.0.0" />
  </ItemGroup>
</Project>

MyTests

  • 目标net462
  • 项目参考MyLogging。

csproj文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="FluentAssertions" Version="4.19.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="1.1.2" />
    <PackageReference Include="NSubstitute" Version="2.0.3" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.analyzers" Version="0.1.0" />
    <PackageReference Include="xunit.categories" Version="1.0.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="MyLogging\MyLogging.csproj" />
  </ItemGroup>
</Project>

如果我使用dotnet cli工具,我可以运行dotnet test并且它运行没有问题,所以我认为它的VS2017与新项目格式混淆。

1 个答案:

答案 0 :(得分:1)

对于旧式项目(旧的.csproj格式),您必须将以下内容添加到.csproj文件中:

<PropertyGroup>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>

这不能回答原来的问题,但由于这是我遇到的问题,我将为其他人的利益留下答案。

请参阅: Referencing .NET Standard Assemblies from both .NET Core and .NET Framework