我在netstandard 1.5项目中使用StackTrace时遇到了困难。它似乎缺少在netcore 3.1项目中运行良好的默认构造函数。
错误是:
error CS7036: There is no argument given that corresponds to the required formal
parameter 'exception' of 'StackTrace.StackTrace(Exception, bool)'
没有专门的API页面指示API的实际是什么,而是显示netcore 3.1,它确实有一个默认的构造函数。
https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.stacktrace?view=netcore-3.1&viewFallbackFrom=netstandard-1.5
如果我在 Rider 中查看源代码,那么我会看到与 3.1 相同的 API。
.cspproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netstandard1.5</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Diagnostics.StackTrace" Version="4.3.0" />
</ItemGroup>
</Project>
Program.cs
using System;
namespace stacktracer
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(
new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name
);
}
}
}
我可以在netstandard中创建StackTrace而没有例外吗?
System.Diagnostics.StackTrace
不是.NET Standard 1.5的一部分。
您可以在 GitHub 上找到完整的 API。
或者,您可以使用 .NET API 浏览器。
但是,.NET Standard 2.1确实包含此 API。