Visual Studio 2022-Xamarinプロジェクトビルド時エラー

空白のモバイルアプリのプロジェクトを作成した時に発生したエラーについて。

初めに


新規プロジェクトでモバイルアプリ-空白と選んで、ViewとViewModelのソースを追加した。

構成は普通の感じに。

エラー内容

ソース追加後、ビルドを行ったところ以下のエラーが出た。
このエラーは初めてだったので、戸惑ってしまった。

error NETSDK1022: 重複する 'EmbeddedResource' 個のアイテムが含められました。.NET SDK には、既定でプロジェクト ディレクトリからのアイテムが 'EmbeddedResource' 個含まれています。
これらのアイテムをプロジェクト ファイルから削除するか、'EnableDefaultEmbeddedResourceItems' プロパティを 'false' に設定してプロジェクト ファイルに明示的に含めることができます。詳細については、https://aka.ms/sdkimplicititems をご覧ください。重複するアイテムは、'Views\CStepPage.xaml' でした。

当初は何を言っているのかわからず、リビルドしたりなんかしたのだけど一向に収まらなかった。

ググって検索したところ、Microsoftのサイトに以下の様なページがあった。

.NET プロジェクト SDK の概要
.NET プロジェクト SDK について説明します。

この対応を入れるべきかと考えたのだが、同様な手法で作ったプロジェクトがあったのでそちらのプロジェクトファイルをちょっと覗いて見た。

エラーが出るものと出ないものの違い

エラーが出たプロジェクトの該当部分らしきもの。

  <ItemGroup>
    <None Remove="Views\CStepPage.xaml" />
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Include="Views\CStepPage.xaml">
      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
    </EmbeddedResource>
  </ItemGroup>

エラーが出ないプロジェクトの該当らしき部分のもの。

  <ItemGroup>
    <Compile Update="Views\IndicatorTestPage.xaml.cs">
      <DependentUpon>IndicatorTestPage.xaml</DependentUpon>
    </Compile>
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Views\IndicatorTestPage.xaml">
      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
    </EmbeddedResource>
  </ItemGroup>

違いとしては次のような感じになる。

  1. エラーの方は、CStepPage.xamlに関するItemGroupが2つある。
  2. エラーの方は、EmbeddedResourceの種別がInclude。
  3. 正しいほうには、xamlに対するcsのItemGroupがある。

対策

結果としては、Includeと記載されていた内容をUpdateに変更することで、エラー自体は解消された。

しかし、正しいほうのプロジェクトファイルには、xamlに連携されるcsの記述があったので、xaml/csの記述方法については、正しいほうに合わせこみをすることにした。
こちらの方は、cs内の属性に[XamlCompilation(XamlCompilationOptions.Compile)]があるのでいらないのかもしれないけど。

コメント

タイトルとURLをコピーしました