Skip to content

Commit

Permalink
breaking change: Remove fody and add central nuget package (#3731)
Browse files Browse the repository at this point in the history
Removed Fody, since we aren't changing the API surface it'll be
supported longer.

Introducing central nuget packages.

This pushes the versioning out to a inherited file, so its consistent
across the entire project.

Also introducing grouping for common dependencies such as Splat, Fody or
Maui.

This will allow us to have consistent packaging across the entire
solution.

This also means we are no longer using wildcard nuget versions anymore.
The grouping should simplify the number of updates we have to perform
though.
  • Loading branch information
glennawatson committed Feb 15, 2024
1 parent 37cc0e3 commit 00305af
Show file tree
Hide file tree
Showing 60 changed files with 226 additions and 3,290 deletions.
13 changes: 13 additions & 0 deletions src/Benchmarks/Directory.Packages.props
@@ -0,0 +1,13 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="BenchmarkDotNet" Version="0.13.12" />
</ItemGroup>

<!-- Inherit parent props file if one exists. -->
<Import Condition="$([MSBuild]::GetPathOfFileAbove('Directory.Packages.props', '$(MSBuildThisFileDirectory)../')) != ''"
Project="$([MSBuild]::GetPathOfFileAbove('Directory.Packages.props', '$(MSBuildThisFileDirectory)../'))" />
</Project>
15 changes: 3 additions & 12 deletions src/Benchmarks/ReactiveUI.Benchmarks.csproj
@@ -1,28 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<IsPackable>false</IsPackable>
<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
<PackageId>BenchmarkDotNet.Samples</PackageId>
<TargetFrameworks>net8.0</TargetFrameworks>
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DebugSymbols>true</DebugSymbols>
<OutputType>Exe</OutputType>
<NoWarn>;1591;1701;1702;1705;CA1822</NoWarn>
<PackageDescription>A MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. This is the base package with the base platform implementations</PackageDescription>
</PropertyGroup>

<ItemGroup>
<Compile Remove="CreateReactiveListBenchmark.cs" />
<Compile Remove="ReactiveListOperationBenchmark.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="DynamicData" Version="*" />
<PackageReference Include="BenchmarkDotNet" Version="*" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework' ">
<Reference Include="System.Reflection" />
<PackageReference Include="DynamicData" />
<PackageReference Include="BenchmarkDotNet" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReactiveUI\ReactiveUI.csproj" />
Expand Down
98 changes: 98 additions & 0 deletions src/Directory.Packages.props
@@ -0,0 +1,98 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<PropertyGroup>
<FodyVersion>6.8.0</FodyVersion>
<SplatVersion>14.8.12</SplatVersion>
<XamarinAndroidSupportVersion>28.0.0.3</XamarinAndroidSupportVersion>
<XUnitVersion>2.6.6</XUnitVersion>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="coverlet.msbuild" Version="6.0.0" />
<PackageVersion Include="DynamicData" Version="8.3.27" />
<PackageVersion Include="FluentAssertions" Version="6.12.0" />
<PackageVersion Include="Fody" Version="$(FodyVersion)" />
<PackageVersion Include="FodyHelpers" Version="$(FodyVersion)" />
<PackageVersion Include="FodyPackaging" Version="$(FodyVersion)" />
<PackageVersion Include="JetBrains.DotMemoryUnit" Version="3.2.20220510" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.11.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageVersion Include="Microsoft.Reactive.Testing" Version="6.0.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<PackageVersion Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.2428" />
<PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" />
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.6.133" />
<PackageVersion Include="PublicApiGenerator" Version="11.1.0" />
<PackageVersion Include="Reactive.Wasm" Version="1.2.2" />
<PackageVersion Include="Roslynator.Analyzers" Version="4.7.0" />
<PackageVersion Include="Splat" Version="$(SplatVersion)" />
<PackageVersion Include="Splat.Autofac" Version="$(SplatVersion)" />
<PackageVersion Include="Splat.Drawing" Version="$(SplatVersion)" />
<PackageVersion Include="Splat.DryIoc" Version="$(SplatVersion)" />
<PackageVersion Include="Splat.Ninject" Version="$(SplatVersion)" />
<PackageVersion Include="stylecop.analyzers" Version="1.2.0-beta.556" />
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
<PackageVersion Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
<PackageVersion Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.0" />
<PackageVersion Include="Verify.Xunit" Version="23.0.1" />
<PackageVersion Include="Xamarin.Android.Support.Animated.Vector.Drawable" Version="$(XamarinAndroidSupportVersion)" />
<PackageVersion Include="Xamarin.Android.Support.v4" Version="$(XamarinAndroidSupportVersion)" />
<PackageVersion Include="Xamarin.Android.Support.v7.AppCompat" Version="$(XamarinAndroidSupportVersion)" />
<PackageVersion Include="Xamarin.Android.Support.v7.Preference" Version="$(XamarinAndroidSupportVersion)" />
<PackageVersion Include="Xamarin.Android.Support.v7.RecyclerView" Version="$(XamarinAndroidSupportVersion)" />
<PackageVersion Include="Xamarin.Android.Support.Vector.Drawable" Version="$(XamarinAndroidSupportVersion)" />
<PackageVersion Include="Xamarin.AndroidX.Core" Version="1.12.0.1" />
<PackageVersion Include="Xamarin.AndroidX.Legacy.Support.Core.UI" Version="1.0.0.21" />
<PackageVersion Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.6.2.1" />
<PackageVersion Include="Xamarin.AndroidX.Preference" Version="1.2.1.1" />
<PackageVersion Include="Xamarin.Forms" Version="5.0.0.2622" />
<PackageVersion Include="Xamarin.Forms.Mocks" Version="4.7.0.1" />
<PackageVersion Include="Xamarin.Google.Android.Material" Version="1.9.0.3" />
<PackageVersion Include="xunit" Version="$(XUnitVersion)" />
<PackageVersion Include="xunit.runner.console" Version="$(XUnitVersion)" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.6" />
<PackageVersion Include="Xunit.StaFact" Version="1.1.11" />
</ItemGroup>
<ItemGroup Condition="'$(UseMaui)' != 'true'">
<PackageVersion Include="Microsoft.WindowsAppSDK" Version="1.4.231115000" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) or '$(TargetFramework)' == 'net6.0' or '$(TargetFramework)' == 'net7.0' or '$(TargetFramework)' == 'net8.0' or $(TargetFramework.EndsWith('-windows10.0.17763.0')) or $(TargetFramework.EndsWith('-windows10.0.19041.0'))">
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net6'))">
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="6.0.25" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net7'))">
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="7.0.14" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net8'))">
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="8.0.0" />
<PackageVersion Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
<PackageVersion Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="3.1.32" />
<PackageVersion Include="System.ComponentModel" Version="4.3.0" />
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageVersion Include="System.Diagnostics.Contracts" Version="4.3.0" />
<PackageVersion Include="System.Dynamic.Runtime" Version="4.3.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('tizen'))">
<PackageVersion Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageVersion Include="System.Collections" Version="4.3.0" />
<PackageVersion Include="System.Diagnostics.Debug" Version="4.3.0" />
<PackageVersion Include="System.Diagnostics.Tracing" Version="4.3.0" />
<PackageVersion Include="System.IO.FileSystem" Version="4.3.0" />
<PackageVersion Include="System.Net.Primitives" Version="4.3.1" />
<PackageVersion Include="System.Runtime.InteropServices" Version="4.3.0" />
<PackageVersion Include="System.Text.Encoding.Extensions" Version="4.3.0" />
<PackageVersion Include="System.Threading" Version="4.3.0" />
</ItemGroup>
</Project>
45 changes: 18 additions & 27 deletions src/Directory.build.props
Expand Up @@ -18,9 +18,8 @@
<RepositoryUrl>https://github.com/reactiveui/reactiveui</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<NoWarn>$(NoWarn);SA1010;RCS1198;RCS1158;RCS1163;RCS1256;IDE0060;IDE1006;VSSpell001</NoWarn>

<!-- Publish the repository URL in the built .nupkg (in the NuSpec <Repository> element) -->
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Embed source files that are not tracked by the source control manager in the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<!-- Include PDB in the built .nupkg -->
Expand All @@ -33,52 +32,44 @@
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<IncludePackageReferencesDuringMarkupCompilation>true</IncludePackageReferencesDuringMarkupCompilation>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<XunitVersion>2.6.6</XunitVersion>
</PropertyGroup>
<!--<PropertyGroup Condition="$(IsTestProject) != 'true'">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>-->

<!-- MonoAndroid doesn't seem to want to allow debugging for maintainers -->
<PropertyGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) ">
<DebugType>portable</DebugType>
</PropertyGroup>

<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

<ItemGroup Condition="$(IsTestProject)">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="xunit" Version="$(XunitVersion)" />
<PackageReference Include="xunit.runner.console" Version="$(XunitVersion)" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6" />
<PackageReference Include="Xunit.StaFact" Version="1.1.11" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
<PackageReference Include="Microsoft.Reactive.Testing" Version="6.0.0" />
<PackageReference Include="PublicApiGenerator" Version="11.1.0" />
<PackageReference Include="coverlet.msbuild" Version="6.0.0" PrivateAssets="All" />
<PackageReference Include="Verify.Xunit" Version="23.0.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.console" />
<PackageReference Include="xunit.runner.visualstudio" />
<PackageReference Include="Xunit.StaFact" />
<PackageReference Include="FluentAssertions" />
<PackageReference Include="Microsoft.Reactive.Testing" />
<PackageReference Include="PublicApiGenerator" />
<PackageReference Include="coverlet.msbuild" PrivateAssets="All" />
<PackageReference Include="Verify.Xunit" />
</ItemGroup>

<ItemGroup Condition="'$(IsTestProject)' != 'true'">
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
</ItemGroup>

<PropertyGroup>
<PropertyGroup>
<SolutionDir Condition="'$(SolutionDir)' == ''">$(MSBuildThisFileDirectory)</SolutionDir>
</PropertyGroup>

<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)..\images\logo.png" Pack="true" PackagePath="\"/>
<None Include="$(MSBuildThisFileDirectory)..\images\logo.png" Pack="true" PackagePath="\" />
<None Include="$(MSBuildThisFileDirectory)..\LICENSE" Pack="true" PackagePath="LICENSE" />
<None Include="$(MSBuildThisFileDirectory)..\README.md" Pack="true" PackagePath="\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" PrivateAssets="all" />
<PackageReference Include="stylecop.analyzers" Version="1.2.0-beta.556" PrivateAssets="all" />
<PackageReference Include="Roslynator.Analyzers" Version="4.7.0" PrivateAssets="All" />
<ItemGroup>
<PackageReference Include="Nerdbank.GitVersioning" PrivateAssets="all" />
<PackageReference Include="stylecop.analyzers" PrivateAssets="all" />
<PackageReference Include="Roslynator.Analyzers" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="$(MSBuildThisFileDirectory)stylecop.json" Link="stylecop.json" />
Expand Down
26 changes: 11 additions & 15 deletions src/ReactiveUI.AndroidSupport/ReactiveUI.AndroidSupport.csproj
@@ -1,32 +1,28 @@
<Project Sdk="MSBuild.Sdk.Extras">

<PropertyGroup>
<TargetFrameworks>MonoAndroid13.0</TargetFrameworks>
<PackageDescription>Provides ReactiveUI extensions for the Android Support Library</PackageDescription>
<PackageId>ReactiveUI.AndroidSupport</PackageId>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;xamarin;android;forms;monodroid;monotouch;xamarin.android;net;</PackageTags>
</PropertyGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) ">
<!-- Hack to get around invalid version of Java.Interop -->
<Reference Include="Java.Interop">
<!-- Path to a VS 2019 Java.Interop.dll -->
<HintPath>..\Java.Interop.dll</HintPath>
</Reference>
<!-- Path to a VS 2019 Java.Interop.dll -->
<HintPath>..\Java.Interop.dll</HintPath>
</Reference>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Xamarin.Android.Support.Animated.Vector.Drawable" Version="28.*" />
<PackageReference Include="Xamarin.Android.Support.v4" Version="28.*" />
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat" Version="28.*" />
<PackageReference Include="Xamarin.Android.Support.v7.Preference" Version="28.*" />
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" Version="28.*" />
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" Version="28.*" />
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
<PackageReference Include="Xamarin.Android.Support.Animated.Vector.Drawable" />
<PackageReference Include="Xamarin.Android.Support.v4" />
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat" />
<PackageReference Include="Xamarin.Android.Support.v7.Preference" />
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" />
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" />
<PackageReference Include="System.Runtime.Serialization.Primitives" />
<Reference Include="System.Runtime.Serialization" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ReactiveUI\ReactiveUI.csproj" />
</ItemGroup>
</Project>
</Project>
24 changes: 10 additions & 14 deletions src/ReactiveUI.AndroidX/ReactiveUI.AndroidX.csproj
@@ -1,31 +1,27 @@
<Project Sdk="MSBuild.Sdk.Extras">

<PropertyGroup>
<TargetFrameworks>MonoAndroid13.0</TargetFrameworks>
<PackageDescription>Provides ReactiveUI extensions for the AndroidX Library</PackageDescription>
<PackageId>ReactiveUI.AndroidX</PackageId>
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;xamarin;android;forms;monodroid;monotouch;xamarin.android;net;</PackageTags>
</PropertyGroup>

<ItemGroup>
<!-- Hack to get around invalid version of Java.Interop -->
<Reference Include="Java.Interop">
<!-- Path to a VS 2019 Java.Interop.dll -->
<HintPath>..\Java.Interop.dll</HintPath>
</Reference>
<!-- Path to a VS 2019 Java.Interop.dll -->
<HintPath>..\Java.Interop.dll</HintPath>
</Reference>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.12.0.1" />
<PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.1" />
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.Core.UI" Version="1.0.0.21" />
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.9.0.3" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.6.2.1" />
<PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
<PackageReference Include="Xamarin.AndroidX.Core" />
<PackageReference Include="Xamarin.AndroidX.Preference" />
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.Core.UI" />
<PackageReference Include="Xamarin.Google.Android.Material" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" />
<PackageReference Include="System.Runtime.Serialization.Primitives" />
<Reference Include="System.Runtime.Serialization" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ReactiveUI\ReactiveUI.csproj" />
</ItemGroup>
</Project>
</Project>
21 changes: 3 additions & 18 deletions src/ReactiveUI.Blazor/ReactiveUI.Blazor.csproj
Expand Up @@ -5,27 +5,12 @@
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;eventsnet;netstandard;blazor;web;</PackageTags>
<NoWarn>$(NoWarn);BL0007;</NoWarn>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Reactive.Wasm" Version="1.*" />
<PackageReference Include="Reactive.Wasm" />
</ItemGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) ">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="3.1.32" />
</ItemGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('net6')) ">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="6.0.25" />
</ItemGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('net7')) ">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="7.0.14" />
</ItemGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('net8')) ">
<PackageReference Include="Microsoft.AspNetCore.Components" Version="8.0.0" />
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ReactiveUI\ReactiveUI.csproj" />
</ItemGroup>
Expand Down
9 changes: 2 additions & 7 deletions src/ReactiveUI.Blend/ReactiveUI.Blend.csproj
@@ -1,5 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net462;net472;net6.0-windows10.0.17763.0;net7.0-windows10.0.17763.0;net8.0-windows10.0.17763.0</TargetFrameworks>
<AssemblyName>ReactiveUI.Blend</AssemblyName>
Expand All @@ -9,22 +8,18 @@
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;Blend;wpf;net;</PackageTags>
<UseWPF>true</UseWPF>
</PropertyGroup>

<ItemGroup>
<Compile Remove="Platforms\**\*.cs" />
<None Include="Platforms\**\*.cs" />
</ItemGroup>

<ItemGroup Condition=" $(TargetFramework.StartsWith('net4')) ">
<Reference Include="PresentationFramework.Aero" />
</ItemGroup>

<ItemGroup>
<Compile Include="Platforms\net4\**\*.cs" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" />
</ItemGroup>

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

0 comments on commit 00305af

Please sign in to comment.