Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在编译时而不是运行时检测Xamarin Android应用程序(Visual Studio 2015)中的API级别不兼容_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

C# 在编译时而不是运行时检测Xamarin Android应用程序(Visual Studio 2015)中的API级别不兼容

C# 在编译时而不是运行时检测Xamarin Android应用程序(Visual Studio 2015)中的API级别不兼容,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我正在使用Visual Studio 2015(Windows)编写一个Xamarin Android应用程序。我想针对最新的Android API,同时保持与API 16(4.1 Jelly Bean)的向后兼容性 我知道如何确保没有通过API级别检查引发运行时错误: if(Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { //Call API supported by Lollipop and ab

我正在使用Visual Studio 2015(Windows)编写一个Xamarin Android应用程序。我想针对最新的Android API,同时保持与API 16(4.1 Jelly Bean)的向后兼容性

我知道如何确保没有通过API级别检查引发运行时错误:

if(Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
    //Call API supported by Lollipop and above, but not by lower API's
}
else
{
   //Alternative code for graceful backwards compatibility
}
不幸的是,如果我没有进行此检查,Visual Studio仍然会愉快地编译和运行我的代码-如果API不受支持,我会得到一个运行时
Java.Lang.NoSuchMethodError
异常。我可以手动将项目重置为一个较低级别的API以在编译时捕获错误,但这有点麻烦-在编译时捕获这些错误(甚至作为警告)将非常好,而无需手动重置为我想要支持的每个较低级别的API

如何在编译时检测不兼容的API调用?


注意:我确实发现了一个关于StackOverflow的问题,但它专门针对Xamarin Studio for Mac-这表明这应该可以在Visual Studio 2015 for Windows中实现(2017解决方案也可以)。

不幸的是,如果我没有这项检查,Visual Studio仍然很乐意编译并运行我的代码
-但是如果它没有编译您的代码,即使你进行了检查,它也不会编译它,这更糟糕。可能是@GSerg的重复,所以你提到的问题没有解决我的问题-它包含[相当多]关于API级别的一般信息-我熟悉这些信息,并且在发布我的问题之前遇到了这个问题。我特别寻找一种在编译时检测不正确的API级别调用的方法。我不完全确定你的第一条评论是什么意思——也许我的问题不清楚——我当然很高兴VS总体上编译了我的代码——我只是更喜欢编译时错误而不是运行时错误。这在Xamarin for Mac上是可能的-在Windows上应该有一种方法。你可以使用Android Lint检查:你可以通过
@JonDouglas启用它,不幸的是Android Lint没有捕捉到这种类型的错误(我刚刚在我的项目中尝试过)。不过,谢谢你的建议,总的来说可能会有帮助。:)