在 WPF 新建用户用户控件时,偶尔的 VS 版本会逗你,给你创建了一个编码不对或偷偷给你的文件第一个字符添加了一个不可见字符,此时将会构建不通过

在构建的时候提示下面代码

Error MC3000: 'Data at the root level is invalid. Line 1, position 1.' XML is not valid. (1, 1)

此时的原因要么是编码的原因,要么是偷偷写入了第一个看不见的字符

如果是编码原因可以尝试使用我的 VS 插件,点击 Encoding normalize tool 下载安装,之后就可以在插件这里转换某个文件的编码

第二个方案是在修复 Utf8 之后依然不让通过,可以尝试新建一个 xml 文件

然后复制 xaml 文件的内容到这个 xml 文件里面,复制 xaml 文件名,删除 xaml 文件,重命名 xml 文件为 xaml 文件名

注意 csproj 文件里面需要保持 xaml 文件的引用关系,如使用 Page 引用同时设置构建

如下代码放在 csproj 表示让所有 xaml 文件使用页面形式构建

    <Compile Update="**\*.xaml.cs">
      <DependentUpon>%(Filename)</DependentUpon>
    </Compile>
    <Page Include="**\*.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>

如需要特定某个文件可使用如下代码

    <Compile Update="Foo.xaml.cs">
      <DependentUpon>Foo.xaml</DependentUpon>
    </Compile>
    <Page Include="Foo.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>

本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/WPF-%E6%96%B0%E5%BB%BA%E7%94%A8%E6%88%B7%E6%8E%A7%E4%BB%B6%E6%8F%90%E7%A4%BA-Error-MC3000-%E9%A6%96%E4%B8%AA-xaml-%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%88%E6%B3%95.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系