Search code examples
.netvisual-studiowinui-3solution

Incompatible WinRT.Runtime versions between projects in the same Solution (Winui3, .Net 8)


There aren't any Syntax errors, but the solution won't compile. I guess this started after updating Visual Studio, but I'm unsure. I've tried cleaning/recompiling the solution and updating the NuGet packages. All the projects are on .net 8 and only view is implanted. There are other projects in the solution which compile just fine with the view version. Here's the error:

Assembly "CustomControls" with identity "CustomControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" uses "WinRT.Runtime, Version=2.2.0.0, Culture=neutral, PublicKeyToken=99ea127f02d97709," which has a newer version than the referenced assembly "WinRT.Runtime" with identity "WinRT.Runtime, Version=2.1.0.0, Culture=neutral, PublicKeyToken=99ea127f02d97709."

CustomControls.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>CustomControls</RootNamespace>
    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &gt;= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>
    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <UseWinUI>true</UseWinUI>
    <PublishTrimmed>False</PublishTrimmed>
    <TrimMode>partial</TrimMode>
  </PropertyGroup>

  <ItemGroup>
      <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.6.250108002" />
      <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1742" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Converters\Converters.csproj" />
  </ItemGroup>
</Project>

View.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>View</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <Platforms>x86;x64;ARM64</Platforms>
    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &gt;= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>
    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <PublishProfile>win-$(Platform).pubxml</PublishProfile>
    <UseWinUI>true</UseWinUI>
    <EnableMsixTooling>true</EnableMsixTooling>
    <WindowsSdkPackageVersion>10.0.19041.38</WindowsSdkPackageVersion>
    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
    <PublishTrimmed>False</PublishTrimmed>
    <TrimMode>partial</TrimMode>
    <DefaultLanguage>pt-BR</DefaultLanguage>
    <GenerateAppInstallerFile>False</GenerateAppInstallerFile>
    <AppxPackageSigningEnabled>False</AppxPackageSigningEnabled>
    <AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
    <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
    <AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
    <GenerateTestArtifacts>True</GenerateTestArtifacts>
    <AppxBundle>Never</AppxBundle>
    <HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
  </PropertyGroup>
  <ItemGroup>
    ...
  </ItemGroup>

  <ItemGroup>
    ....
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1742" />
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.6.250108002" />
    <PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
    <PackageReference Include="System.Private.Uri" Version="4.3.2" />
    <PackageReference Include="System.Text.Json" Version="9.0.1" />
    <Manifest Include="$(ApplicationManifest)" />
  </ItemGroup>

  <!--
    Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
    Tools extension to be activated for this project even if the Windows App SDK Nuget
    package has not yet been restored.
  -->
  <ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
    <ProjectCapability Include="Msix" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Converters\Converters.csproj" />
    <ProjectReference Include="..\CustomControls\CustomControls.csproj" />
    <ProjectReference Include="..\Dados\Data.csproj" />
    <ProjectReference Include="..\UserAuthentication\UserAuthentication.csproj" />
    <ProjectReference Include="..\WinUI.TableView\WinUI.TableView.csproj" />
  </ItemGroup>
  [...]
    <!--
    Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
    Explorer "Package and Publish" context menu entry to be enabled for this project even if
    the Windows App SDK Nuget package has not yet been restored.
  -->
  <PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
    <HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
  </PropertyGroup>
</Project>

Solution

  • I found the issue. It was because of the manual setting of the windows SDK version in the view.csproj

    I updated the project to .Net 9 (because the SDK setting line was to fix a Winui3 bug in .Net8) and also removed the min OS version line. New View.csproj code:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
        <RootNamespace>View</RootNamespace>
        <ApplicationManifest>app.manifest</ApplicationManifest>
        <Platforms>x86;x64;ARM64</Platforms>
        <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &gt;= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>
        <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
        <PublishProfile>win-$(Platform).pubxml</PublishProfile>
        <UseWinUI>true</UseWinUI>
        <EnableMsixTooling>true</EnableMsixTooling>
        <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
        <PublishTrimmed>False</PublishTrimmed>
        <TrimMode>partial</TrimMode>
        <DefaultLanguage>pt-BR</DefaultLanguage>
        <GenerateAppInstallerFile>False</GenerateAppInstallerFile>
        <AppxPackageSigningEnabled>False</AppxPackageSigningEnabled>
        <AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
        <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
        <AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
        <GenerateTestArtifacts>True</GenerateTestArtifacts>
        <AppxBundle>Never</AppxBundle>
        <HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
        <SupportedOSPlatformVersion>10.0.26100.0</SupportedOSPlatformVersion>
      </PropertyGroup>