【发布时间】:2017-11-02 15:43:11
【问题描述】:
我在从 net462 项目中引用 netstandard 项目时遇到了一些问题。
当我在 MyTests 中运行测试时,它抱怨缺少 dll,这些是来自 MyLogging NuGet 引用 (SeriLog) 的 dll。我不希望 MyTests 对 MyLogging 进行 NuGet 引用,因为这违背了它的目的,我也不希望在 MyLogging 中包含测试。有没有办法让项目引用自动包含所有子引用?我宁愿不在 MyTests 中包含对 MyLogging 依赖项的引用,因为我对测试方法不感兴趣,只是它正确地记录到基于配置的任何内容。在测试项目中包含 MyLogging 依赖项会泄漏实现,如果我决定以不同的方式登录,我将不得不维护引用。
我的日志
- 目标 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>
我的测试
- 目标 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 与新的项目格式混淆了。
【问题讨论】:
-
您是否查看了为 MyLogging 生成的 nuspec 以查看它是否包含依赖项?该步骤中存在各种错误,这些错误可能会使它们出错或丢失(不是您的错)。
-
依赖项应该已经为项目引用传递。请检查 serilog 二进制文件是否存在于您的测试项目的 bin 目录中。但并非 .net 框架测试项目默认不会生成绑定重定向,因此您可能会遇到程序集绑定错误。查看相关stackoverflow.com/questions/43995432/…
-
@MarcGravell 是在nuspec中列出的,但是我用的不是NuGet包,而是项目参考。
-
@MartinUllrich 二进制文件不在日志记录项目中。由于它是一个 .netstandard 项目,所有依赖项都列在 .deps.json 文件中。这可能是工具没有拾取它们的原因。有关如何解决此问题的任何建议?
标签: .net .net-core visual-studio-2017 .net-standard