我在net462项目的项目引用netstandard项目时遇到了一些问题。
当我在MyTests中运行测试时,它抱怨缺少dll,那些是来自MyLogging NuGet引用(SeriLog)的dll。我不希望MyTests对MyLogging进行NuGet引用,因为它违背了它的目的,我也不想将测试包含在MyLogging中。有没有办法让项目引用自动包含所有子引用?我宁愿不在MyTests中包含对MyLogging依赖项的反馈,因为我对测试方法不感兴趣,只是它正确地记录到基于配置的任何内容。在测试项目中包含MyLogging依赖项正在泄漏实现,如果我决定以不同的方式登录,我将不得不维护引用。
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>
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与新项目格式混淆。
答案 0 :(得分:1)
对于旧式项目(旧的.csproj格式),您必须将以下内容添加到.csproj文件中:
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
这不能回答原来的问题,但由于这是我遇到的问题,我将为其他人的利益留下答案。
请参阅: Referencing .NET Standard Assemblies from both .NET Core and .NET Framework