C# Xamarin形成UWP-Can和x27;t编译.NET本机工具链

C# Xamarin形成UWP-Can和x27;t编译.NET本机工具链,c#,uwp,xamarin.uwp,.net-native,C#,Uwp,Xamarin.uwp,.net Native,我们有一个应用程序,在没有.NET本机工具链的情况下可以很好地编译,但当我们单击此复选框时,会出现以下编译错误(调试或发布): 输出窗口中有很多错误。这里有太多东西要发布,但这里有几个提示: *1> C:\AdaptSource\Xivic\Adapt.Presentation.Helpdesk.UWP\obj\x86\Debug\ilc\in\System.Reflection.Extensions.dll 1> The assembly 'System.Reflection.

我们有一个应用程序,在没有.NET本机工具链的情况下可以很好地编译,但当我们单击此复选框时,会出现以下编译错误(调试或发布):

输出窗口中有很多错误。这里有太多东西要发布,但这里有几个提示:

*1>  C:\AdaptSource\Xivic\Adapt.Presentation.Helpdesk.UWP\obj\x86\Debug\ilc\in\System.Reflection.Extensions.dll
1>  The assembly 'System.Reflection.Metadata.dll' is found in more than one folder.
1>  file:///C:/AdaptSource/Xivic/Adapt.Presentation.Helpdesk.UWP/obj/x86/Debug/ilc/in/System.Reflection.Metadata.dll*
我认为可能有一些DLL在四处浮动,它对使用哪一个感到困惑,但即使在完全清理Git之后,这种情况仍然会发生

这是默认的.rd.xml

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
    <!--
      An Assembly element with Name="*Application*" applies to all assemblies in
      the application package. The asterisks are not wildcards.
    -->
    <Assembly Name="*Application*" Dynamic="Required All" />


    <!-- Add your application specific runtime directives here. -->


  </Application>
</Directives>

. 但是,我真的不明白它要我做什么,所以我被卡住了

如果您的UWP应用程序引用多个程序集(例如,第三方控件库,或者您的应用程序本身被拆分为多个PCL),Xamarin.Forms可能无法从这些程序集(例如自定义渲染器)加载对象


这可能发生在使用Compile with.NET本机工具链时,该工具链是项目的Properties>Build>General窗口中UWP应用程序的一个选项

您可以通过在App.xaml.cs中使用特定于UWP的Forms.Init call重载来修复此问题,如下面的代码所示(您应该用代码引用的实际类替换ClassInherAssembly):

//您需要添加`using System.Reflection`
名单

如果您的UWP应用程序引用多个程序集(例如,第三方控件库,或者您的应用程序本身被拆分为多个PCL),Xamarin.Forms可能无法从这些程序集(例如自定义渲染器)加载对象


这可能发生在使用Compile with.NET本机工具链时,该工具链是项目的Properties>Build>General窗口中UWP应用程序的一个选项

您可以通过在App.xaml.cs中使用特定于UWP的Forms.Init call重载来修复此问题,如下面的代码所示(您应该用代码引用的实际类替换ClassInherAssembly):

//您需要添加`using System.Reflection`

列表。

当使用
使用.NET原生工具链编译时,可能会发生这种情况,该工具链是项目的属性>构建>常规窗口中UWP应用程序的一个选项

尝试取消选中此选项


所述内容应根据。

当使用
使用.NET本机工具链编译时,可能会出现这种情况,该工具链是项目的属性>构建>常规窗口中UWP应用程序的一个选项

尝试取消选中此选项


所说的内容应该根据。

这可能已经解决,但您的应用程序是否有可能使用诸如DataContractJsonSerializer或XmlSerializer之类的序列化类进行序列化

我也有类似的构建错误,我必须在Dafault.rd.xml中添加这些错误:

<Namespace Name="My.Namespace.Model" DataContractJsonSerializer="Required All" />
<Namespace Name="My.Namespace.Sql" XmlSerializer="Required All" />

对于Forms.Init上的uwp特定重写,我不必包括除以下插件程序集以外的任何其他程序集(但没有它,这不会导致任何生成/编译错误-只有缺少字体图标等运行时问题):

List assembliesToInclude=new List();
assembliesToInclude.Add(typeof(FormsPlugin.Iconize.IconButton.GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(FormsPlugin.Iconize.UWP.IconControls.GetTypeInfo().Assembly);
Xamarin.Forms.Forms.Init(e,assembliesToInclude);

这可能已经解决,但您的应用程序是否有可能使用诸如DataContractJsonSerializer或XmlSerializer之类的序列化类进行序列化

我也有类似的构建错误,我必须在Dafault.rd.xml中添加这些错误:

<Namespace Name="My.Namespace.Model" DataContractJsonSerializer="Required All" />
<Namespace Name="My.Namespace.Sql" XmlSerializer="Required All" />

对于Forms.Init上的uwp特定重写,我不必包括除以下插件程序集以外的任何其他程序集(但没有它,这不会导致任何生成/编译错误-只有缺少字体图标等运行时问题):

List assembliesToInclude=new List();
assembliesToInclude.Add(typeof(FormsPlugin.Iconize.IconButton.GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(FormsPlugin.Iconize.UWP.IconControls.GetTypeInfo().Assembly);
Xamarin.Forms.Forms.Init(e,assembliesToInclude);

我在准备将应用程序发布到Windows应用商店时遇到了新VS19的问题(在VS17中工作正常)

发布版本正在成功生成,但不是针对windows应用商店

仅帮助git清理-xfd


我想在VS19中有一个问题,那就是清除Windows应用商店准备构建功能中的一些文件

我在准备应用程序发布到Windows应用商店时遇到了新VS19的问题(在VS17中工作正常)

发布版本正在成功生成,但不是针对windows应用商店

仅帮助git清理-xfd


我想在VS19中有一个问题,那就是清除Windows应用商店准备构建功能中的一些文件

只是在字里行间读。。。构建事件中是否有某种后处理加载我们的代码并运行Xamarin.Forms.Forms.Init方法?如果没有,调用此方法会对编译器产生怎样的影响?我已经尝试传入项目使用的每个程序集,但它没有修复错误。我不明白这样做如何修复编译时错误。这个答案是错误的。请在uwp客户端项目中显示有关
Default.rd.xml
的更多详细信息。我们只是使用Default.rd.xml的默认值。我们尝试过摆弄这个文件中的选项,但似乎没有任何帮助。我们应该在这里放什么?这会影响编译吗?只是在字里行间阅读。。。构建事件中是否有某种后处理加载我们的代码并运行Xamarin.Forms.Forms.Init方法?如果没有,调用此方法会对编译器产生怎样的影响?我已经尝试传入项目使用的每个程序集,但它没有修复错误。我不明白这样做如何修复编译时错误。这个答案被误导了。请
<Namespace Name="My.Namespace.Model" DataContractJsonSerializer="Required All" />
<Namespace Name="My.Namespace.Sql" XmlSerializer="Required All" />
List<Assembly> assembliesToInclude = new List<Assembly>();
assembliesToInclude.Add(typeof(FormsPlugin.Iconize.IconButton).GetTypeInfo().Assembly);
assembliesToInclude.Add(typeof(FormsPlugin.Iconize.UWP.IconControls).GetTypeInfo().Assembly);
Xamarin.Forms.Forms.Init(e, assembliesToInclude);