TargetFramework=net47
构建正常,但在执行时,我们从MSTEST或XUNIT收到以下信息。使用Microsoft.NET.Test.Sdk
v15.0.0。
测试执行错误(x86):Serilog Seq 扩展
System.MissingMethodException:找不到方法:'Serilog.LoggerConfiguration Serilog.SeqLoggerConfigurationExtensions.Seq(Serilog.Configuration.LoggerSinkConfiguration,System.String,Serilog.Events.LogEventLevel,Int32,System.Nullable<1<System.TimeSpan>>,System.String,System.String,System.Nullable<1,System.Nullable<Int64>,Serilog.Core.LoggingLevelSwitch,System.Net.Http.HttpMessageHandler,System.Nullable<1,Boolean,Int32>)'。
单元测试示例 - Serilog
[Fact]
public void TestMethod1()
{
LoggerConfiguration loggerConfig = new LoggerConfiguration();
loggerConfig.MinimumLevel.Debug();
loggerConfig.WriteTo.LiterateConsole();
loggerConfig.WriteTo.Seq("http://localhost:65454");
}
如果我们引用
net462
项目,我们会得到相同的结果,因此我们认为这与VS 2017有关,而不是.NET Framework版本。我们从未在VS 2015中看到过这个错误。似乎存在加载带有可选参数/匹配签名等DLL扩展的问题。该方法显然存在,否则它就无法编译——为什么在运行时会崩溃呢?如果我只使用本地nuget包,它可以正常工作——只有当通过
ProjectReference
在.NET Core CSPROJ中引用任何项目时,才会出现问题。它似乎不能正确处理依赖树。另一个例子是使用
KeyVault
,其中VS Test Runner无法正确找到扩展方法...测试执行错误(x86):KeyVault Extension
消息: System.MissingMethodException : Method not found: 'Void Microsoft.Azure.KeyVault.KeyVaultClient..ctor(AuthenticationCallback, System.Net.Http.DelegatingHandler[])'。
单元测试示例-KeyVault
[Fact]
public void TestMethod1()
{
KeyVaultClient _kvClient = new KeyVaultClient(new AuthenticationCallback(getKeyVaultToken));
}
private static async Task<string> getKeyVaultToken(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential("test", "account");
AuthenticationResult result = authContext.AcquireTokenAsync(resource, clientCred).Result;
if (result == null)
throw new InvalidOperationException("Failed to obtain the JWT token");
return result.AccessToken;
}
System.Net.Http
降级为目标版本4.0.0.0
(GAC'd),它将恢复新版本中的安全问题。 - SliverNinja - MSFTSystem.MissingMethodException
在.NetFramework
项目中仅在 Windows 计算机上导致单元测试失败,但在 Mac 上测试通过。 添加对Microsoft.NET.Test.SDK
包的引用已为我解决了这个问题。 - foxanna