查找MCG0007编译器警告的来源

时间:2019-12-18 18:24:00

标签: c# uwp .net-native

我正在尝试编译uwp应用程序,但出现以下错误:

  

警告MCG:警告MCG0007:方法'System.Int32 Microsoft.DotNet.PlatformAbstractions.Native.NativeMethods.Windows.RtlGetVersion(Microsoft.DotNet.PlatformAbstractions.Native.NativeMethods.Windows .RTL_OSVERSIONINFOEX)”。调用此方法将在运行时引发异常。请确保P / Invoke指向UWP应用程序中允许的Windows API,或者指向包中的本机DLL。如果出于某些原因您的P / Invoke不满足这些要求,请使用[DllImport(ExactSpelling = true)表示您了解使用非UWP API的含义。

问题是我找不到原点,有没有办法调试此问题?或者我怎么能找到导致问题的图书馆?

更新:我附加了引发相同编译错误的示例项目。如果有人可以看看。我将非常感谢。

Sample project

更新2:我有一个使用以下nuget包的UWP应用:

此应用程序使用3个.netstandard库。

UWP应用包含以下参考。

<PackageReference Include="AdaptiveCards">
      <Version>1.2.4</Version>
    </PackageReference>
    <PackageReference Include="MailKit">
      <Version>2.4.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter">
      <Version>2.6.4</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter.Analytics">
      <Version>2.6.4</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter.Crashes">
      <Version>2.6.4</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Azure.Storage.Blob">
      <Version>11.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
      <Version>6.2.9</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Services.Store.Engagement">
      <Version>10.1901.28001</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Toolkit.Uwp">
      <Version>6.0.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Toolkit.Uwp.Notifications">
      <Version>6.0.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Toolkit.Uwp.UI.Animations">
      <Version>6.0.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Toolkit.Uwp.UI.Controls">
      <Version>6.0.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Toolkit.Uwp.UI.Controls.DataGrid">
      <Version>6.0.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.UI.Xaml">
      <Version>2.3.191211002</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Xaml.Behaviors.Uwp.Managed">
      <Version>2.0.1</Version>
    </PackageReference>
    <PackageReference Include="MimeKit">
      <Version>2.4.1</Version>
    </PackageReference>
    <PackageReference Include="MvvmLight">
      <Version>5.4.1.1</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.bundle_green">
      <Version>2.0.2</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.core">
      <Version>2.0.2</Version>
    </PackageReference>
    <PackageReference Include="Win2D.uwp">
      <Version>1.24.0</Version>
    </PackageReference>

它使用3个.netStandard库。

ServicesLibrary

<PackageReference Include="itext7" Version="7.1.9" />
    <PackageReference Include="Microsoft.AppCenter" Version="2.6.4" />
    <PackageReference Include="Microsoft.AppCenter.Analytics" Version="2.6.4" />
    <PackageReference Include="Microsoft.Azure.Storage.Blob" Version="11.1.1" />
    <PackageReference Include="Microsoft.Identity.Client" Version="4.7.1" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
    <PackageReference Include="Portable.BouncyCastle" Version="1.8.5.2" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.7.0" />
    <PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
    <PackageReference Include="System.IO.FileSystem.AccessControl" Version="4.7.0" />
    <PackageReference Include="System.ServiceModel.Http" Version="4.7.0" />

DataLibrary

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Analyzers" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.1.0" />
    <PackageReference Include="Z.EntityFramework.Extensions.EFCore" Version="3.0.31" />
    <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="3.0.31" />
    <PackageReference Include="Z.Expressions.Eval" Version="3.0.11" />

SigningLibrary

 <PackageReference Include="BouncyCastle.NetCore" Version="1.8.5" />
    <PackageReference Include="System.Security.AccessControl" Version="4.7.0" />
    <PackageReference Include="System.Security.Cryptography.Pkcs" Version="4.7.0" />
    <PackageReference Include="System.Security.Cryptography.Xml" Version="4.7.0" />
    <PackageReference Include="System.Security.Permissions" Version="4.7.0" />
    <PackageReference Include="System.Security.Principal.Windows" Version="4.7.0" />

UWP引用了ServicesLibrary和DataLibrary,ServicesLibrary引用了SigningLibrary和DataLibrary。这就是我试图在发布模式下编译的应用程序的结构。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

提出所有建议后,尝试重现编译器错误。我发现Z.EntityFramework库是导致此问题的一个库。查看日志,发现所有内容都是对EntityFrameworkCore的引用,与编译器错误有关。但是从那以后,我开始删除库,直到最终找到导致该问题的库。

使用诸如MCG0007: Unresolved P/Invoke

这样的隐秘消息来找到解决方案非常困难并且令人沮丧

感谢您的帮助。