基于.NET Standard的Xamarin Forms项目UWP构建失败求助
解决.NET Standard Xamarin项目UWP端构建缺失xr.xml/xbf文件及程序集解析问题
我之前也碰到过几乎一模一样的情况,.NET Standard项目确实没有UWP类库那个「Generate library layout」的可视化配置选项,但咱们可以手动修改项目文件来实现相同效果,一步步来解决:
1. 先做基础清理重建
先把解决方案的缓存彻底清一遍,很多时候文件找不到的问题都是缓存损坏导致的:
- 右键解决方案 → 清理解决方案
- 先单独右键
myapp.Basic项目 → 生成,确保类库本身编译无错误 - 最后右键UWP项目 → 生成
2. 手动给.NET Standard项目添加Generate Library Layout配置
因为可视化选项不存在,咱们直接编辑项目文件触发XAML相关文件生成:
- 右键
myapp.Basic项目 → 卸载项目 - 再次右键项目 → 编辑myapp.Basic.csproj
- 在
<PropertyGroup>节点里添加这两行配置:<GenerateLibraryLayout>true</GenerateLibraryLayout> <EnableXBindings>true</EnableXBindings> - 保存文件后,右键项目 → 重新加载项目
这两个属性就是「Generate library layout」选项背后的实际配置项,添加后会自动生成需要的xr.xml文件,解决第一个缺失文件的报错。
3. 确认XAML文件的生成操作正确
检查myapp.Basic里的所有XAML文件:
- 选中XAML文件,查看右侧属性面板
- 确认生成操作设置为
Page,而不是Content或其他类型
只有设为Page,编译器才会生成对应的.xbf文件,解决缺失MainPage.xbf、App.xbf的问题。
4. 修复程序集解析错误
这个问题通常是UWP项目没正确引用或复制myapp.Basic的程序集:
- 先确认UWP项目对
myapp.Basic的引用是项目引用(右键UWP项目→添加→引用→项目,选中myapp.Basic),而不是直接引用dll文件 - 如果还是不行,手动在UWP项目的.csproj里添加依赖复制配置:
卸载UWP项目,编辑.csproj,添加下面的ItemGroup(注意替换路径和.NET Standard版本为你实际的项目信息):<ItemGroup> <Content Include="..\myapp.Basic\bin\$(Configuration)\netstandard2.0\myapp.Basic.dll"> <Link>myapp.Basic.dll</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="..\myapp.Basic\bin\$(Configuration)\netstandard2.0\myapp.Basic.xr.xml"> <Link>myapp.Basic.xr.xml</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
5. 核对平台目标一致性
确保UWP项目的构建平台和目标平台一致:
- 顶部工具栏的解决方案平台选择
x86(和你报错里的路径匹配) - 右键UWP项目→属性→生成→平台目标,设置为
x86
做完这些步骤后,重新构建UWP项目,应该就能解决所有报错了。
内容的提问来源于stack exchange,提问作者Ced
相关产品推荐
相关产品推荐

