在Visual Studio App Center构建Xamarin Forms应用时遇重复EmbeddedResource项错误
解决Visual Studio App Center构建Xamarin Forms(.NET Standard 2.0)时的重复EmbeddedResource错误
嘿,这个问题我太熟了!之前帮朋友排查过一模一样的情况,核心原因就是App Center的构建环境用的旧版.NET SDK(2.0.3)和你本地更新后的Visual Studio、Xamarin Forms版本不兼容——旧SDK会自动把项目里的XAML文件都标记为EmbeddedResource,而新版Xamarin Forms的构建逻辑也会处理这些XAML资源,两边一叠加就触发了重复项错误。
给你几个靠谱的解决方案,按优先级来:
方案1:显式排除重复的XAML资源
直接在你的.NET Standard项目的.csproj文件里添加配置,告诉旧SDK不要自动包含XAML文件,交给Xamarin Forms的工具链来处理:
<ItemGroup> <!-- 排除所有XAML文件,避免SDK自动添加为EmbeddedResource --> <EmbeddedResource Remove="**\*.xaml" /> </ItemGroup>
如果担心误排除其他XAML资源,也可以精准指定要排除的目录,比如只排除页面或控件的XAML:
<ItemGroup> <EmbeddedResource Remove="Views\*.xaml" /> <EmbeddedResource Remove="Controls\*.xaml" /> </ItemGroup>
方案2:升级App Center的.NET SDK版本
在项目根目录新建一个global.json文件,指定和你本地一致的.NET SDK版本(比如2.1.801或更高,根据你本地的版本来):
{ "sdk": { "version": "2.1.801" } }
新版本的.NET SDK已经修复了默认资源包含的逻辑冲突,App Center构建时会自动下载并使用你指定的SDK版本。
方案3:锁定Xamarin Forms版本一致性
确保App Center构建时使用的Xamarin Forms版本和你本地测试通过的版本完全一致。在.csproj文件里明确指定版本号:
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2515" />
(把版本号替换成你本地正在用的那个稳定版本)
验证步骤
修改完配置后,先在本地重新构建项目确认没有问题,再推送到App Center触发构建,那个Duplicate 'EmbeddedResource'的错误应该就消失啦!
内容的提问来源于stack exchange,提问作者Jonas Stensved
相关产品推荐
相关产品推荐

