Skip to content

Commit 6aee4f2

Browse files
Implement central package management and fix build issues (#672)
* Use central package management * Added packages * Fix build * Fix cswin32 version * Fix warning about yamldotnet * update project reference * Use global json * Update to .net9 * Addressed comments * Remove rollForward * Try 10.0.300 * Revert "Try 10.0.300" This reverts commit 9ad81ce. * Update image * Revert and update vstest * Revert back to net9 * Update src/WingetCreateCLI/Properties/PublishProfiles/x86ReleasePublishProfile.pubxml Co-authored-by: Flor Chacón <14323496+florelis@users.noreply.github.com> --------- Co-authored-by: Flor Chacón <14323496+florelis@users.noreply.github.com>
1 parent deca8ce commit 6aee4f2

13 files changed

Lines changed: 151 additions & 75 deletions

File tree

Directory.Packages.props

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<Project>
2+
<PropertyGroup>
3+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
5+
</PropertyGroup>
6+
<ItemGroup>
7+
<PackageVersion Include="AutoMapper" Version="15.1.3" />
8+
<PackageVersion Include="CommandLineParser" Version="2.9.1" />
9+
<PackageVersion Include="DesktopBridge.Helpers" Version="1.2.2" />
10+
<PackageVersion Include="jose-jwt" Version="4.1.0" />
11+
<PackageVersion Include="Microsoft.CorrelationVector" Version="1.0.42" />
12+
<PackageVersion Include="Microsoft.Msix.Utils" Version="2.1.1" />
13+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
14+
<PackageVersion Include="Microsoft.Windows.CsWin32" Version="0.3.213" />
15+
<PackageVersion Include="Microsoft.WindowsPackageManager.Utils" Version="1.12.350" />
16+
<PackageVersion Include="Moq" Version="4.20.70" />
17+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
18+
<PackageVersion Include="Newtonsoft.Json.Schema" Version="3.0.15" />
19+
<PackageVersion Include="NLog" Version="5.2.8" />
20+
<PackageVersion Include="NSwag.MSBuild" Version="14.0.3" />
21+
<PackageVersion Include="NUnit" Version="4.0.1" />
22+
<PackageVersion Include="NUnit3TestAdapter" Version="4.5.0" />
23+
<PackageVersion Include="Octokit" Version="9.1.2" />
24+
<PackageVersion Include="Polly" Version="8.3.0" />
25+
<PackageVersion Include="RestSharp" Version="112.0.0" />
26+
<PackageVersion Include="Sharprompt" Version="2.4.5" />
27+
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
28+
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
29+
<PackageVersion Include="System.Private.Uri" Version="4.3.2" />
30+
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
31+
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
32+
<PackageVersion Include="Vestris.ResourceLib" Version="2.2.0" />
33+
<PackageVersion Include="WiX" Version="3.14.1" />
34+
<PackageVersion Include="YamlDotNet" Version="16.3.0" />
35+
</ItemGroup>
36+
</Project>

pipelines/azure-pipelines.release.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,14 @@ extends:
152152
displayName: Configure internal feed
153153
workingDirectory: $(Build.SourcesDirectory)
154154

155+
- task: UseDotNet@2
156+
displayName: Use .NET SDK from global.json
157+
inputs:
158+
packageType: sdk
159+
useGlobalJson: true
160+
workingDirectory: $(Build.SourcesDirectory)
161+
performMultiLevelLookup: true
162+
155163
- task: DotNetCoreCLI@2
156164
displayName: Restore
157165
inputs:

pipelines/azure-pipelines.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ variables:
3434
buildPlatform: "x64"
3535

3636
# Target framework
37-
targetFramework: "net8.0-windows10.0.26100.0"
37+
targetFramework: "net9.0-windows10.0.26100.0"
3838

3939
resources:
4040
repositories:
@@ -109,6 +109,14 @@ extends:
109109
$manifest.Package.Identity.Version = "$(version)"
110110
$manifest.save("$(workingDirectory)/WingetCreatePackage/Package.appxmanifest")
111111
112+
- task: UseDotNet@2
113+
displayName: Use .NET SDK from global.json
114+
inputs:
115+
packageType: sdk
116+
useGlobalJson: true
117+
workingDirectory: $(Build.SourcesDirectory)
118+
performMultiLevelLookup: true
119+
112120
- task: DotNetCoreCLI@2
113121
displayName: Restore
114122
inputs:

src/WingetCreateCLI.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ EndProject
2020
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A1727DC5-E7A5-4899-BF53-EAF658055D61}"
2121
ProjectSection(SolutionItems) = preProject
2222
.editorconfig = .editorconfig
23+
..\Directory.Packages.props = ..\Directory.Packages.props
2324
EndProjectSection
2425
EndProject
2526
Global

src/WingetCreateCLI/Commands/UpdateCommand.cs

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ namespace Microsoft.WingetCreateCLI.Commands
1212
using AutoMapper;
1313
using CommandLine;
1414
using CommandLine.Text;
15+
using Microsoft.Extensions.Logging.Abstractions;
1516
using Microsoft.WingetCreateCLI.Logging;
1617
using Microsoft.WingetCreateCLI.Models.Settings;
1718
using Microsoft.WingetCreateCLI.Properties;
@@ -614,31 +615,33 @@ private static string ExtractArchiveAndRetrieveDirectoryPath(string packageFileP
614615
private static Manifests ConvertSingletonToMultifileManifest(WingetCreateCore.Models.Singleton.SingletonManifest singletonManifest)
615616
{
616617
// Create automapping configuration
617-
var config = new MapperConfiguration(cfg =>
618-
{
619-
cfg.AllowNullCollections = true;
620-
cfg.CreateMap<WingetCreateCore.Models.Singleton.SingletonManifest, VersionManifest>()
621-
.ForMember(dest => dest.DefaultLocale, opt => opt.MapFrom(src => src.PackageLocale))
622-
.ForMember(dest => dest.ManifestVersion, opt => opt.Ignore());
623-
cfg.CreateMap<WingetCreateCore.Models.Singleton.SingletonManifest, DefaultLocaleManifest>().ForMember(dest => dest.ManifestVersion, opt => opt.Ignore());
624-
cfg.CreateMap<WingetCreateCore.Models.Singleton.SingletonManifest, InstallerManifest>()
625-
.ForMember(dest => dest.ManifestVersion, opt => opt.Ignore());
626-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Dependencies, WingetCreateCore.Models.Installer.Dependencies>();
627-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Installer, WingetCreateCore.Models.Installer.Installer>();
628-
cfg.CreateMap<WingetCreateCore.Models.Singleton.InstallerSwitches, WingetCreateCore.Models.Installer.InstallerSwitches>();
629-
cfg.CreateMap<WingetCreateCore.Models.Singleton.AppsAndFeaturesEntry, WingetCreateCore.Models.Installer.AppsAndFeaturesEntry>();
630-
cfg.CreateMap<WingetCreateCore.Models.Singleton.ExpectedReturnCode, WingetCreateCore.Models.Installer.ExpectedReturnCode>();
631-
cfg.CreateMap<WingetCreateCore.Models.Singleton.PackageDependencies, WingetCreateCore.Models.Installer.PackageDependencies>();
632-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Markets, WingetCreateCore.Models.Installer.Markets>();
633-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Markets2, WingetCreateCore.Models.Installer.Markets2>(); // Markets2 is not used, but is required to satisfy mapping configuration.
634-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Agreement, WingetCreateCore.Models.DefaultLocale.Agreement>();
635-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Documentation, WingetCreateCore.Models.DefaultLocale.Documentation>();
636-
cfg.CreateMap<WingetCreateCore.Models.Singleton.NestedInstallerFile, WingetCreateCore.Models.Installer.NestedInstallerFile>();
637-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Files, WingetCreateCore.Models.Installer.Files>();
638-
cfg.CreateMap<WingetCreateCore.Models.Singleton.InstallationMetadata, WingetCreateCore.Models.Installer.InstallationMetadata>();
639-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Icon, WingetCreateCore.Models.DefaultLocale.Icon>();
640-
cfg.CreateMap<WingetCreateCore.Models.Singleton.Authentication, WingetCreateCore.Models.Installer.Authentication>();
641-
});
618+
var config = new MapperConfiguration(
619+
cfg =>
620+
{
621+
cfg.AllowNullCollections = true;
622+
cfg.CreateMap<WingetCreateCore.Models.Singleton.SingletonManifest, VersionManifest>()
623+
.ForMember(dest => dest.DefaultLocale, opt => opt.MapFrom(src => src.PackageLocale))
624+
.ForMember(dest => dest.ManifestVersion, opt => opt.Ignore());
625+
cfg.CreateMap<WingetCreateCore.Models.Singleton.SingletonManifest, DefaultLocaleManifest>().ForMember(dest => dest.ManifestVersion, opt => opt.Ignore());
626+
cfg.CreateMap<WingetCreateCore.Models.Singleton.SingletonManifest, InstallerManifest>()
627+
.ForMember(dest => dest.ManifestVersion, opt => opt.Ignore());
628+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Dependencies, WingetCreateCore.Models.Installer.Dependencies>();
629+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Installer, WingetCreateCore.Models.Installer.Installer>();
630+
cfg.CreateMap<WingetCreateCore.Models.Singleton.InstallerSwitches, WingetCreateCore.Models.Installer.InstallerSwitches>();
631+
cfg.CreateMap<WingetCreateCore.Models.Singleton.AppsAndFeaturesEntry, WingetCreateCore.Models.Installer.AppsAndFeaturesEntry>();
632+
cfg.CreateMap<WingetCreateCore.Models.Singleton.ExpectedReturnCode, WingetCreateCore.Models.Installer.ExpectedReturnCode>();
633+
cfg.CreateMap<WingetCreateCore.Models.Singleton.PackageDependencies, WingetCreateCore.Models.Installer.PackageDependencies>();
634+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Markets, WingetCreateCore.Models.Installer.Markets>();
635+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Markets2, WingetCreateCore.Models.Installer.Markets2>(); // Markets2 is not used, but is required to satisfy mapping configuration.
636+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Agreement, WingetCreateCore.Models.DefaultLocale.Agreement>();
637+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Documentation, WingetCreateCore.Models.DefaultLocale.Documentation>();
638+
cfg.CreateMap<WingetCreateCore.Models.Singleton.NestedInstallerFile, WingetCreateCore.Models.Installer.NestedInstallerFile>();
639+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Files, WingetCreateCore.Models.Installer.Files>();
640+
cfg.CreateMap<WingetCreateCore.Models.Singleton.InstallationMetadata, WingetCreateCore.Models.Installer.InstallationMetadata>();
641+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Icon, WingetCreateCore.Models.DefaultLocale.Icon>();
642+
cfg.CreateMap<WingetCreateCore.Models.Singleton.Authentication, WingetCreateCore.Models.Installer.Authentication>();
643+
},
644+
NullLoggerFactory.Instance);
642645
var mapper = config.CreateMapper();
643646

644647
Manifests manifests = new Manifests();

src/WingetCreateCLI/Properties/PublishProfiles/x64ReleasePublishProfile.pubxml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
66
<PropertyGroup>
77
<Configuration>Release</Configuration>
88
<Platform>x64</Platform>
9-
<PublishDir>bin\x64\Release\net8.0-windows10.0.26100.0\win-x64\publish\</PublishDir>
9+
<PublishDir>bin\x64\Release\net9.0-windows10.0.26100.0\win-x64\publish\</PublishDir>
1010
<PublishProtocol>FileSystem</PublishProtocol>
11-
<TargetFramework>net8.0-windows10.0.26100.0</TargetFramework>
11+
<TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
1212
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
1313
<SelfContained>true</SelfContained>
1414
<PublishSingleFile>False</PublishSingleFile>
1515
<PublishReadyToRun>False</PublishReadyToRun>
1616
<PublishTrimmed>False</PublishTrimmed>
1717
</PropertyGroup>
18-
</Project>
18+
</Project>

src/WingetCreateCLI/Properties/PublishProfiles/x86ReleasePublishProfile.pubxml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
66
<PropertyGroup>
77
<Configuration>Release</Configuration>
88
<Platform>x86</Platform>
9-
<PublishDir>bin\x86\Release\net8.0-windows10.0.26100.0\win-x86\publish\</PublishDir>
9+
<PublishDir>bin\x86\Release\net9.0-windows10.0.26100.0\win-x86\publish\</PublishDir>
1010
<PublishProtocol>FileSystem</PublishProtocol>
11-
<TargetFramework>net8.0-windows10.0.26100.0</TargetFramework>
11+
<TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
1212
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
1313
<SelfContained>true</SelfContained>
1414
<PublishSingleFile>False</PublishSingleFile>
1515
<PublishReadyToRun>False</PublishReadyToRun>
1616
<PublishTrimmed>False</PublishTrimmed>
1717
</PropertyGroup>
18-
</Project>
18+
</Project>

src/WingetCreateCLI/WingetCreateCLI.csproj

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net8.0-windows10.0.26100.0</TargetFramework>
5+
<TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
66
<AssemblyName>WingetCreateCLI</AssemblyName>
77
<RootNamespace>Microsoft.WingetCreateCLI</RootNamespace>
88
<Version>1.12</Version>
@@ -18,23 +18,23 @@
1818
</ItemGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="AutoMapper" Version="13.0.1" />
22-
<PackageReference Include="CommandLineParser" Version="2.9.1" />
23-
<PackageReference Include="DesktopBridge.Helpers" Version="1.2.2" />
24-
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.183">
21+
<PackageReference Include="AutoMapper" />
22+
<PackageReference Include="CommandLineParser" />
23+
<PackageReference Include="DesktopBridge.Helpers" />
24+
<PackageReference Include="Microsoft.Windows.CsWin32">
2525
<PrivateAssets>all</PrivateAssets>
2626
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2727
</PackageReference>
28-
<PackageReference Include="NSwag.MSBuild" Version="14.0.3">
28+
<PackageReference Include="NSwag.MSBuild">
2929
<PrivateAssets>all</PrivateAssets>
3030
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3131
</PackageReference>
32-
<PackageReference Include="Sharprompt" Version="2.4.5" />
33-
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
32+
<PackageReference Include="Sharprompt" />
33+
<PackageReference Include="StyleCop.Analyzers">
3434
<PrivateAssets>all</PrivateAssets>
3535
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3636
</PackageReference>
37-
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
37+
<PackageReference Include="System.Security.Cryptography.ProtectedData" />
3838
</ItemGroup>
3939

4040
<ItemGroup>
@@ -117,4 +117,4 @@
117117
<SdkToolsPathMaybeWithx64Architecture>$(TargetFrameworkSDKToolsDirectory)$(PlatformTarget)\</SdkToolsPathMaybeWithx64Architecture>
118118
</PropertyGroup>
119119
</Target>
120-
</Project>
120+
</Project>

src/WingetCreateCore/Serializers/YamlSerializer.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,16 @@ public AliasTypeInspector(ITypeInspector innerTypeDescriptor)
136136
this.innerTypeDescriptor = innerTypeDescriptor;
137137
}
138138

139+
public override string GetEnumName(Type enumType, string value)
140+
{
141+
return this.innerTypeDescriptor.GetEnumName(enumType, value);
142+
}
143+
144+
public override string GetEnumValue(object enumValue)
145+
{
146+
return this.innerTypeDescriptor.GetEnumValue(enumValue);
147+
}
148+
139149
/// <summary>
140150
/// Because certain properties were generated incorrectly, we needed to create custom fields for those properties.
141151
/// Therefore to resolve naming conflicts during deserialization, we prioritize fields that have the YamlMemberAttribute defined
@@ -182,7 +192,7 @@ public bool Accepts(Type type)
182192
return type.IsEnum || ((u != null) && u.IsEnum);
183193
}
184194

185-
public object ReadYaml(IParser parser, Type type)
195+
public object ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer)
186196
{
187197
Type u = Nullable.GetUnderlyingType(type);
188198
if (u != null)
@@ -202,7 +212,7 @@ public object ReadYaml(IParser parser, Type type)
202212
return Enum.Parse(type, serializableValues[parsedEnum.Value].Name);
203213
}
204214

205-
public void WriteYaml(IEmitter emitter, object value, Type type)
215+
public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerializer serializer)
206216
{
207217
var enumMember = type.GetMember(value.ToString()).FirstOrDefault();
208218
var yamlValue = enumMember?.GetCustomAttributes<EnumMemberAttribute>(true).Select(ema => ema.Value).FirstOrDefault() ?? value.ToString();
@@ -217,14 +227,14 @@ public YamlSkipPropertyVisitor(IObjectGraphVisitor<IEmitter> nextVisitor)
217227
{
218228
}
219229

220-
public override bool EnterMapping(IPropertyDescriptor key, IObjectDescriptor value, IEmitter context)
230+
public override bool EnterMapping(IPropertyDescriptor key, IObjectDescriptor value, IEmitter context, ObjectSerializer serializer)
221231
{
222232
if (key.Name == "AdditionalProperties")
223233
{
224234
return false;
225235
}
226236

227-
return base.EnterMapping(key, value, context);
237+
return base.EnterMapping(key, value, context, serializer);
228238
}
229239
}
230240

src/WingetCreateCore/WingetCreateCore.csproj

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
55
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
66
<RootNamespace>Microsoft.WingetCreateCore</RootNamespace>
7-
<TargetFramework>net8.0-windows10.0.26100.0</TargetFramework>
7+
<TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
88
<Platforms>x86;x64</Platforms>
99
<RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
1010
<GenerateDocumentationFile>true</GenerateDocumentationFile>
@@ -15,27 +15,27 @@
1515
</ItemGroup>
1616

1717
<ItemGroup>
18-
<PackageReference Include="jose-jwt" Version="4.1.0" />
19-
<PackageReference Include="Microsoft.CorrelationVector" Version="1.0.42" />
20-
<PackageReference Include="Microsoft.Msix.Utils" Version="2.1.1" />
18+
<PackageReference Include="jose-jwt" />
19+
<PackageReference Include="Microsoft.CorrelationVector" />
20+
<PackageReference Include="Microsoft.Msix.Utils" />
2121
<!--https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#generatepathproperty-->
22-
<PackageReference Include="Microsoft.WindowsPackageManager.Utils" Version="1.12.350" GeneratePathProperty="true" />
23-
<PackageReference Include="Newtonsoft.Json.Schema" Version="3.0.15" />
24-
<PackageReference Include="NLog" Version="5.2.8" />
25-
<PackageReference Include="NSwag.MSBuild" Version="14.0.3">
22+
<PackageReference Include="Microsoft.WindowsPackageManager.Utils" GeneratePathProperty="true" />
23+
<PackageReference Include="Newtonsoft.Json.Schema" />
24+
<PackageReference Include="NLog" />
25+
<PackageReference Include="NSwag.MSBuild">
2626
<PrivateAssets>all</PrivateAssets>
2727
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2828
</PackageReference>
29-
<PackageReference Include="Polly" Version="8.3.0" />
30-
<PackageReference Include="RestSharp" Version="112.0.0" />
31-
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
29+
<PackageReference Include="Polly" />
30+
<PackageReference Include="RestSharp" />
31+
<PackageReference Include="StyleCop.Analyzers">
3232
<PrivateAssets>all</PrivateAssets>
3333
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3434
</PackageReference>
35-
<PackageReference Include="Octokit" Version="9.1.2" />
36-
<PackageReference Include="Vestris.ResourceLib" Version="2.2.0" />
37-
<PackageReference Include="WiX" Version="3.14.1" />
38-
<PackageReference Include="YamlDotNet" Version="15.1.1" />
35+
<PackageReference Include="Octokit" />
36+
<PackageReference Include="Vestris.ResourceLib" />
37+
<PackageReference Include="WiX" />
38+
<PackageReference Include="YamlDotNet" />
3939
</ItemGroup>
4040

4141
<ItemGroup>

0 commit comments

Comments
 (0)