c# - 运行 MSBuild 时发生内部故障 - 无法加载文件或程序集 System.Net.Primitives
问题描述
使用 XUnit 和 Asp.Net Core 5 我有以下测试:
public class Tests : IClassFixture<ServiceProviderFixture> {
private readonly ServiceProviderFixture _fixture;
public IndicatorsTests(ServiceProviderFixture fixture) {
_fixture = fixture;
}
[Fact]
public async Task FirstTest() {
IEnumerable<Decimal> values = await _fixture.Provider.GetService<ICsvImporter>().ImportAsync("Values.csv");
Assert.Equal(1000, values.Count());
}
}
当我运行测试时,我经常会收到错误,但并非总是如此:
MSBUILD : error MSB1025: An internal failure occurred while running MSBuild.
Microsoft.Build.BackEnd.NodeFailedToLaunchException: Could not load file or assembly 'System.Net.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. A device attached to the system is not functioning.
(0x8007001F)
---> System.IO.FileLoadException: Could not load file or assembly 'System.Net.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. A device attached to the system is not functioning.
(0x8007001F)
File name: 'System.Net.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
at System.Diagnostics.Process.OpenStream(Int32 fd, FileAccess access)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.LaunchNode(String msbuildLocation, String commandLineArgs)
--- End of inner exception stack trace ---
at Microsoft.Build.CommandLine.MSBuildApp.BuildProject(String projectFile, String[] targets, String toolsVersion, Dictionary`2 globalProperties, Dictionary`2 restoreProperties, ILogger[] loggers, LoggerVerbosity verbosity, DistributedLoggerRecord[] distributedLoggerRecords, Int32 cpuCount, Boolean enableNodeReuse, TextWriter preprocessWriter, TextWriter targetsWriter, Boolean detailedSummary, ISet`1 warningsAsErrors, ISet`1 warningsAsMessages, Boolean enableRestore, ProfilerLogger profilerLogger, Boolean enableProfiler, Boolean interactive, Boolean isolateProjects, Boolean graphBuild, Boolean lowPriority, String[] inputResultsCaches, String outputResultsCache)
at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine)
Unhandled exception. Microsoft.Build.BackEnd.NodeFailedToLaunchException: Could not load file or assembly 'System.Net.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. A device attached to the system is not functioning.
(0x8007001F)
---> System.IO.FileLoadException: Could not load file or assembly 'System.Net.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. A device attached to the system is not functioning.
(0x8007001F)
File name: 'System.Net.Primitives, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
at System.Diagnostics.Process.OpenStream(Int32 fd, FileAccess access)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.LaunchNode(String msbuildLocation, String commandLineArgs)
--- End of inner exception stack trace ---
at Microsoft.Build.CommandLine.MSBuildApp.BuildProject(String projectFile, String[] targets, String toolsVersion, Dictionary`2 globalProperties, Dictionary`2 restoreProperties, ILogger[] loggers, LoggerVerbosity verbosity, DistributedLoggerRecord[] distributedLoggerRecords, Int32 cpuCount, Boolean enableNodeReuse, TextWriter preprocessWriter, TextWriter targetsWriter, Boolean detailedSummary, ISet`1 warningsAsErrors, ISet`1 warningsAsMessages, Boolean enableRestore, ProfilerLogger profilerLogger, Boolean enableProfiler, Boolean interactive, Boolean isolateProjects, Boolean graphBuild, Boolean lowPriority, String[] inputResultsCaches, String outputResultsCache)
at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine)
at Microsoft.Build.CommandLine.MSBuildApp.Main(String[] args)
ServiceProviderFixture
课程是:
public class ServiceProviderFixture : IDisposable {
public IServiceProvider Provider { get; private set; }
public ServiceProviderFixture() {
IServiceCollection services = new ServiceCollection();
services.AddSingleton<CsvImporterConfiguration>();
services.AddTransient<ICsvImporter, CsvImporter>();
Provider = services.BuildServiceProvider();
}
public void Dispose() { } // Dispose
}
CsvImporter
班级是:
public class CsvImporter : ICsvImporter {
private readonly CsvImporterConfiguration _configuration;
public CsvImporter(CsvImporterConfiguration configuration) {
_configuration = configuration;
}
public CsvImporter(Action<CsvImporterConfiguration> configuration) {
_configuration = new CsvImporterConfiguration();
configuration(_configuration);
}
public async Task<IEnumerable<Decimal>> ImportAsync(String path, CancellationToken token = default(CancellationToken)) {
return await Task.Factory.StartNew(() => {
using (StreamReader stream = new StreamReader(path)) {
using (CsvReader csv = new CsvReader(stream, new CsvConfiguration(_configuration.Culture) {
Delimiter = _configuration.Delimiter
})) {
return csv.GetRecords<Decimal>();
}
}
}, token);
}
}
我错过了什么吗?
也许从文件中读取?
解决方案
这是 MacOS 上的一个已知问题。
它似乎最常发生在安装防病毒软件时。
https://github.com/mono/mono/issues/20878
我见过几个这样的案例。我发现的唯一“修复”是卸载防病毒软件。在某些情况下,我们不得不重新安装 MacOS。
如果您不在 MacOS 上,请告诉我们。
推荐阅读
- javascript - 表情符号具有相同的价值
- python - KeyError:按 Pandas 中时间戳的索引寻址
- tomcat - 运行 Apache Tomcat7 时找不到文件错误
- ios - 如何使用 PDFKit (Swift) 旋转 PDFAnnotation?
- javascript - 调试快速应用程序中的内存泄漏
- python - (使用 Python 的 OpenCV)使用 VideoCapture(1)/外部网络摄像头时出现不希望的自动旋转行为
- c++ - 除非被引用,否则不会创建模板类的静态成员
- apache-kafka - Kafka Producer 批量大小
- jquery - 从 Ajax 发布的页面加载的链接不适用于 Jquery
- python - Android Studio 错误 - chaquo.python.PyException: FileNotFoundError: [Errno 2] No such file or directory