Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;net$(BundledNETCoreAppTargetFrameworkVersion)</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>../../product.snk</AssemblyOriginatorKeyFile>
<Nullable>enable</Nullable>
Expand Down
4 changes: 2 additions & 2 deletions msbuild/Xamarin.MacDev.Tasks/BundleResource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,9 @@ public static string GetVirtualProjectPath<T> (T task, ITaskItem item) where T :
// Then find the directory we should use to compute the result relative to.
string relativeToDirectory; // this is an absolute path.
if (isDefaultItem) {
relativeToDirectory = Path.GetDirectoryName (localMSBuildProjectFullPath);
relativeToDirectory = Path.GetDirectoryName (localMSBuildProjectFullPath)!;
} else {
relativeToDirectory = Path.GetDirectoryName (localDefiningProjectFullPath);
relativeToDirectory = Path.GetDirectoryName (localDefiningProjectFullPath)!;
}
var originalRelativeToDirectory = relativeToDirectory;

Expand Down
4 changes: 2 additions & 2 deletions msbuild/Xamarin.MacDev.Tasks/Decompress.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public static bool TryDecompress (XamarinTask task, string zip, string resource,
}

if (rv) {
Directory.CreateDirectory (Path.GetDirectoryName (stampFile));
Directory.CreateDirectory (Path.GetDirectoryName (stampFile)!);
using var touched = new FileStream (stampFile, FileMode.Create, FileAccess.Write);
createdFiles.Add (stampFile);
}
Expand Down Expand Up @@ -240,7 +240,7 @@ static bool TryDecompressUsingSystemIOCompression (XamarinTask task, string zip,
if (isDir) {
Directory.CreateDirectory (targetPath);
} else {
Directory.CreateDirectory (Path.GetDirectoryName (targetPath));
Directory.CreateDirectory (Path.GetDirectoryName (targetPath)!);
using var streamWrite = File.OpenWrite (targetPath);
using var streamRead = entry.Open ();
#if NET
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static Dictionary<string, string> CloneCustomMetadataToDictionary (this I
var custom = item.CloneCustomMetadata ();
var rv = new Dictionary<string, string> (custom.Count, StringComparer.OrdinalIgnoreCase);
foreach (DictionaryEntry entry in custom)
rv [(string) entry.Key] = (string) entry.Value;
rv [(string) entry.Key] = (string) entry.Value!;
return rv;
}
}
Expand Down
2 changes: 1 addition & 1 deletion msbuild/Xamarin.MacDev.Tasks/LinkerOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void BuildNativeReferenceFlags (TaskLoggingHelper Log, ITaskItem [] Nativ
var path = item.ItemSpec;
// in case the full path to the library is given (msbuild)
if (Path.GetExtension (path) != ".framework")
path = Path.GetDirectoryName (path);
path = Path.GetDirectoryName (path)!;
Frameworks.Add (path);
} else if (kind == NativeReferenceKind.Dynamic) {
var path = item.ItemSpec;
Expand Down
3 changes: 1 addition & 2 deletions msbuild/Xamarin.MacDev.Tasks/StringParserService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,8 @@ public static string Parse (string text, IDictionary<string, string> tags)
}

var tag = text.Substring (startIndex, i - startIndex);
string value;

if (!tags.TryGetValue (tag, out value)) {
if (!tags.TryGetValue (tag, out var value)) {
builder.Append ('$').Append (open).Append (tag).Append (close);
} else {
builder.Append (value);
Expand Down
14 changes: 7 additions & 7 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/ACTool.cs
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ protected override void AppendCommandLineArguments (IDictionary<string, string?>
args.Add ("--include-all-app-icons");

args.Add ("--output-partial-info-plist");
args.Add (Path.GetFullPath (partialAppManifestPath));
args.Add (Path.GetFullPath (partialAppManifestPath!));
}

IEnumerable<ITaskItem> GetCompiledBundleResources (PDictionary output, string intermediateBundleDir)
Expand Down Expand Up @@ -297,8 +297,8 @@ public override bool Execute ()
var catalogFullPath = imageAsset.GetMetadata ("FullPath");

// get the parent (which will typically be .appiconset, .launchimage, .imageset, .iconset, etc)
var catalog = Path.GetDirectoryName (vpath);
catalogFullPath = Path.GetDirectoryName (catalogFullPath);
var catalog = Path.GetDirectoryName (vpath)!;
catalogFullPath = Path.GetDirectoryName (catalogFullPath)!;

var assetType = Path.GetExtension (catalog).TrimStart ('.');

Expand Down Expand Up @@ -368,7 +368,7 @@ public override bool Execute ()
}

var dest = Path.Combine (intermediateCloneDir, vpath);
var dir = Path.GetDirectoryName (dest);
var dir = Path.GetDirectoryName (dest)!;

Directory.CreateDirectory (dir);

Expand Down Expand Up @@ -404,13 +404,13 @@ public override bool Execute ()

if (Platform == ApplePlatform.TVOS) {
if (assetType.Equals ("imagestack", StringComparison.OrdinalIgnoreCase)) {
imageStacksInAssets.Add (Path.GetFileNameWithoutExtension (Path.GetDirectoryName (vpath)));
imageStacksInAssets.Add (Path.GetFileNameWithoutExtension (Path.GetDirectoryName (vpath)!));
} else if (assetType.Equals ("brandassets", StringComparison.OrdinalIgnoreCase)) {
brandAssetsInAssets.Add (Path.GetFileNameWithoutExtension (Path.GetDirectoryName (vpath)));
brandAssetsInAssets.Add (Path.GetFileNameWithoutExtension (Path.GetDirectoryName (vpath)!));
}
} else {
if (assetType.Equals ("appiconset", StringComparison.OrdinalIgnoreCase))
appIconsInAssets.Add (Path.GetFileNameWithoutExtension (Path.GetDirectoryName (vpath)));
appIconsInAssets.Add (Path.GetFileNameWithoutExtension (Path.GetDirectoryName (vpath)!));
}

if (unique.Add (catalog)) {
Expand Down
2 changes: 1 addition & 1 deletion msbuild/Xamarin.MacDev.Tasks/Tasks/AOTCompile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ public override bool Execute ()
}

// All the assemblies to AOT must be in the same directory
var assemblyDirectories = inputs.Select (v => Path.GetDirectoryName (Path.GetFullPath (v))).Distinct ().ToArray ();
var assemblyDirectories = inputs.Select (v => Path.GetDirectoryName (Path.GetFullPath (v))!).Distinct ().ToArray ();
if (assemblyDirectories.Length > 1) {
// The assemblies are not in the same directory, so copy them somewhere else (to InputDirectory)
Directory.CreateDirectory (InputDirectory);
Expand Down
4 changes: 2 additions & 2 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/Archive.cs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ public override bool Execute ()
ArchiveMSym (MSYMDir, archiveDir);

// Archive the Bitcode symbol maps
var bcSymbolMaps = Directory.GetFiles (Path.GetDirectoryName (DSYMDir), "*.bcsymbolmap");
var bcSymbolMaps = Directory.GetFiles (Path.GetDirectoryName (DSYMDir)!, "*.bcsymbolmap");
if (bcSymbolMaps.Length > 0) {
var bcSymbolMapsDir = Path.Combine (archiveDir, "BCSymbolMaps");

Expand Down Expand Up @@ -306,7 +306,7 @@ void ArchiveAppExtension (ITaskItem appex, string archiveDir)
}

// Note: App Extension dSYM dirs exist alongside the main app bundle now that they are generated from the main app's MSBuild targets
var dsymDir = Path.Combine (Path.GetDirectoryName (AppBundleDir.ItemSpec), Path.GetFileName (appex.ItemSpec) + ".dSYM");
var dsymDir = Path.Combine (Path.GetDirectoryName (AppBundleDir.ItemSpec)!, Path.GetFileName (appex.ItemSpec) + ".dSYM");
ArchiveDSym (dsymDir, archiveDir);

var msymDir = appex.ItemSpec + ".mSYM";
Expand Down
10 changes: 5 additions & 5 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/BGen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ public virtual List<string> GenerateCommandLineArguments ()
};
// OutputAssembly is optional so it can be null
if (!string.IsNullOrEmpty (target)) {
var d = Path.GetDirectoryName (target);
var d = Path.GetDirectoryName (target)!;
var n = Path.GetFileName (target);
customTags.Add ("targetpath", Path.Combine (d, n));
customTags.Add ("targetdir", d);
Expand Down Expand Up @@ -243,12 +243,12 @@ public override bool Execute ()

TaskItemFixer.FixItemSpecs (Log, item => OutputPath, References.Where (x => !x.IsFrameworkItem ()).ToArray ());

var success = ExecuteRemotely (out var taskRunner);

if (success)
if (ExecuteRemotely (out var taskRunner)) {
GetGeneratedSourcesAsync (taskRunner).Wait ();
return true;
}

return success;
return false;
} catch (Exception ex) {
Log.LogErrorFromException (ex);

Expand Down
4 changes: 2 additions & 2 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/Codesign.cs
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ bool TryGenerateCommandLineArguments (ITaskItem item, out IList<string> args)
// on macOS apps {item.ItemSpec} can be a symlink to `Versions/Current/{item.ItemSpec}`
// and `Current` also a symlink to `A`... and `_CodeSignature` will be found there
var path = item.ItemSpec;
var parent = Path.GetDirectoryName (path);
var parent = Path.GetDirectoryName (path)!;

// so do not don't sign `A.framework/A`, sign `A.framework` which will always sign the *bundle*
if ((Path.GetExtension (parent) == ".framework") && (Path.GetFileName (path) == Path.GetFileNameWithoutExtension (parent)))
Expand Down Expand Up @@ -464,7 +464,7 @@ bool ExecuteUnsafe ()
// while also not codesigning directories before files inside them.
foreach (var res in resourcesToSign) {
var path = res.ItemSpec;
var parent = Path.GetDirectoryName (path);
var parent = Path.GetDirectoryName (path)!;

// so do not don't sign `A.framework/A`, sign `A.framework` which will always sign the *bundle*
if (Path.GetExtension (parent) == ".framework" && Path.GetFileName (path) == Path.GetFileNameWithoutExtension (parent))
Expand Down
6 changes: 5 additions & 1 deletion msbuild/Xamarin.MacDev.Tasks/Tasks/CompileAppManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,11 @@ bool SetMinimumOSVersion (PDictionary plist)
}
}

#if NET
if (string.IsNullOrEmpty (minimumOSVersionInManifest)) {
#else
if (string.IsNullOrEmpty (minimumOSVersionInManifest) || minimumOSVersionInManifest is null) {
Comment thread
rolfbjarne marked this conversation as resolved.
#endif
// Nothing is specified in the Info.plist - use SupportedOSPlatformVersion, and if that's not set, then use the sdkVersion
if (!string.IsNullOrEmpty (convertedSupportedOSPlatformVersion)) {
minimumOSVersion = convertedSupportedOSPlatformVersion;
Expand Down Expand Up @@ -294,7 +298,7 @@ bool SetMinimumOSVersion (PDictionary plist)
return true;
}

protected string? GetMinimumOSVersion (PDictionary plist, out Version version)
protected string? GetMinimumOSVersion (PDictionary plist, out Version? version)
{
var rv = plist.Get<PString> (PlatformFrameworkHelper.GetMinimumOSVersionKey (Platform))?.Value;
Version.TryParse (rv, out version);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ public override bool Execute ()
var compiledEntitlementsFullPath = Path.GetFullPath (CompiledEntitlements!.ItemSpec);
var compiledEntitlementsFullPathItem = new TaskItem (compiledEntitlementsFullPath);

Directory.CreateDirectory (Path.GetDirectoryName (compiledEntitlementsFullPath));
Directory.CreateDirectory (Path.GetDirectoryName (compiledEntitlementsFullPath)!);

if (BundleEntitlementsInExecutable) {
// Any entitlements the app desires are stored inside the executable for simulator builds,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public override bool Execute ()
metadata.Add ("softwareVersionBundleId", (PString) BundleIdentifier);
}

Directory.CreateDirectory (Path.GetDirectoryName (OutputPath!.ItemSpec));
Directory.CreateDirectory (Path.GetDirectoryName (OutputPath!.ItemSpec)!);
metadata.Save (OutputPath.ItemSpec, true);

return !Log.HasLoggedErrors;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static bool TryGetScnAssetsPath (string file, out string scnassets)
{
scnassets = file;
while (scnassets.Length > 0 && Path.GetExtension (scnassets).ToLowerInvariant () != ".scnassets")
scnassets = Path.GetDirectoryName (scnassets);
scnassets = Path.GetDirectoryName (scnassets)!;
return scnassets.Length > 0;
}

Expand Down
8 changes: 4 additions & 4 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/ComputeBundleLocation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ static bool TryGetFrameworkDirectory (string path, out string? frameworkDirector

if (path.EndsWith (".framework", StringComparison.OrdinalIgnoreCase)) {
// We might be inside a .xcframework, so check for that first
if (TryGetFrameworkDirectory (Path.GetDirectoryName (path), out var xcframeworkDirectory) && xcframeworkDirectory!.EndsWith (".xcframework", StringComparison.OrdinalIgnoreCase)) {
if (TryGetFrameworkDirectory (Path.GetDirectoryName (path)!, out var xcframeworkDirectory) && xcframeworkDirectory!.EndsWith (".xcframework", StringComparison.OrdinalIgnoreCase)) {
frameworkDirectory = xcframeworkDirectory;
return true;
}
Expand All @@ -220,7 +220,7 @@ static bool TryGetFrameworkDirectory (string path, out string? frameworkDirector
return true;
}

return TryGetFrameworkDirectory (Path.GetDirectoryName (path), out frameworkDirectory);
return TryGetFrameworkDirectory (Path.GetDirectoryName (path)!, out frameworkDirectory);
}

// Check if the input, or any of it's parent directories is a *.resources directory or a *.resources.zip file next to a *.dll.
Expand All @@ -240,7 +240,7 @@ static bool IsBindingResourcePackage (string path, out PublishFolderType type)
return true;
}

return IsBindingResourcePackage (Path.GetDirectoryName (path), out type);
return IsBindingResourcePackage (Path.GetDirectoryName (path)!, out type);
}

static string GetVirtualAppBundlePath (ITaskItem item)
Expand Down Expand Up @@ -294,7 +294,7 @@ PublishFolderType ComputePublishFolderType (IList<ITaskItem> items, ITaskItem it
var filename = item.ItemSpec;
var targetPath = item.GetMetadata ("TargetPath");
if (!string.IsNullOrEmpty (targetPath))
filename = Path.Combine (Path.GetDirectoryName (filename), Path.GetFileName (targetPath));
filename = Path.Combine (Path.GetDirectoryName (filename)!, Path.GetFileName (targetPath));

// Check if the item came from @(BundleResource), @(Content) or @(EmbeddedResource)
if (resourceFilesSet.Contains (Path.GetFullPath (item.ItemSpec)))
Expand Down
10 changes: 5 additions & 5 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/ComputeCodesignItems.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public override bool Execute ()
continue;

// Create a new item for the app bundle, and copy any metadata over.
var bundlePath = Path.Combine (Path.GetDirectoryName (AppBundleDir), bundle.ItemSpec);
var bundlePath = Path.Combine (Path.GetDirectoryName (AppBundleDir)!, bundle.ItemSpec);
var item = new TaskItem (bundlePath);
bundle.CopyMetadataTo (item);

Expand All @@ -88,12 +88,12 @@ public override bool Execute ()
var additionalStampFiles = new List<string> ();
// We must touch the dSYM directory's Info.plist, to ensure that we don't end up running dsymutil again after codesigning in the next build
var generateDSymItem = GenerateDSymItems.FirstOrDefault (v => {
return string.Equals (Path.Combine (Path.GetDirectoryName (AppBundleDir), Path.GetDirectoryName (v.ItemSpec)), item.ItemSpec, StringComparison.OrdinalIgnoreCase);
return string.Equals (Path.Combine (Path.GetDirectoryName (AppBundleDir)!, Path.GetDirectoryName (v.ItemSpec)!), item.ItemSpec, StringComparison.OrdinalIgnoreCase);
});
if (generateDSymItem is not null)
additionalStampFiles.Add (generateDSymItem.GetMetadata ("dSYMUtilStampFile"));
// We must touch the stamp file for native stripping, to ensure that we don't want to run strip again after codesigning in the next build
var nativeStripItem = NativeStripItems.FirstOrDefault (v => string.Equals (Path.Combine (Path.GetDirectoryName (AppBundleDir), Path.GetDirectoryName (v.ItemSpec)), item.ItemSpec, StringComparison.OrdinalIgnoreCase));
var nativeStripItem = NativeStripItems.FirstOrDefault (v => string.Equals (Path.Combine (Path.GetDirectoryName (AppBundleDir)!, Path.GetDirectoryName (v.ItemSpec)!), item.ItemSpec, StringComparison.OrdinalIgnoreCase));
if (nativeStripItem is not null)
additionalStampFiles.Add (nativeStripItem.GetMetadata ("StripStampFile"));
// Set the CodesignAdditionalFilesToTouch metadata
Expand All @@ -111,7 +111,7 @@ public override bool Execute ()
// - *.framework directories
// - *.xpc directories
foreach (var bundle in CodesignBundle) {
var bundlePath = Path.Combine (Path.GetDirectoryName (Path.GetDirectoryName (appBundlePath)), bundle.ItemSpec);
var bundlePath = Path.Combine (Path.GetDirectoryName (Path.GetDirectoryName (appBundlePath)!)!, bundle.ItemSpec);
var filesToSign = FindFilesToSign (bundlePath);
foreach (var lib in filesToSign) {
if (Array.Find (CodesignItems, (v) => string.Equals (v.ItemSpec, lib, StringComparison.OrdinalIgnoreCase)) is not null)
Expand Down Expand Up @@ -207,7 +207,7 @@ void RemoveFilesToNotSign (List<ITaskItem> output, string appBundlePath)

// Canonicalize the paths and split into files and directories
var canonicalizedItemsToSkip = SkipCodesignItems
.Select (v => Path.Combine (Path.GetDirectoryName (appBundlePath), v.ItemSpec))
.Select (v => Path.Combine (Path.GetDirectoryName (appBundlePath)!, v.ItemSpec))
.ToArray ();
var canonicalizedDirectoriesToSkip = canonicalizedItemsToSkip
.Where (v => Directory.Exists (v))
Expand Down
4 changes: 2 additions & 2 deletions msbuild/Xamarin.MacDev.Tasks/Tasks/CoreMLCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ IEnumerable<ITaskItem> GetCompiledOutput (string baseOutputDir, IDictionary<stri
}
}

if (metadata is null)
if (metadata is null || rpath is null)
continue;

var compiled = new TaskItem (path, metadata);
Expand Down Expand Up @@ -150,7 +150,7 @@ public override bool Execute ()
var logicalName = model.GetMetadata ("LogicalName");
var bundleName = GetPathWithoutExtension (logicalName) + ".mlmodelc";
var outputPath = Path.Combine (coremlcOutputDir, bundleName);
var outputDir = Path.GetDirectoryName (outputPath);
var outputDir = Path.GetDirectoryName (outputPath)!;
var partialPlist = GetPathWithoutExtension (outputPath) + "-partial.plist";
var log = GetPathWithoutExtension (outputPath) + ".log";
var resourceTags = model.GetMetadata ("ResourceTags");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,12 @@ public class CreateBindingResourcePackage : XamarinTask, ITaskCallback, ICancela
public override bool Execute ()
{
if (ShouldExecuteRemotely ()) {
var success = ExecuteRemotely (out var taskRunner);

if (success) {
if (ExecuteRemotely (out var taskRunner)) {
TransferBindingResourcePackagesToWindowsAsync (taskRunner).Wait ();
return true;
}

return success;
return false;
}

if (NativeReferences.Length == 0) {
Expand Down Expand Up @@ -88,7 +87,7 @@ public override bool Execute ()
Log.LogMessage (MSBStrings.M0121, zipFile);
if (File.Exists (zipFile))
File.Delete (zipFile);
Directory.CreateDirectory (Path.GetDirectoryName (zipFile));
Directory.CreateDirectory (Path.GetDirectoryName (zipFile)!);

var filesToZip = NativeReferences
// Canonicalize directory separators to the current platform
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public override bool Execute ()
});

if (!Directory.Exists (Path.GetDirectoryName (path)))
Directory.CreateDirectory (Path.GetDirectoryName (path));
Directory.CreateDirectory (Path.GetDirectoryName (path)!);

plist.Save (path, true, true);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ List<string> GenerateCommandLineCommands ()
PkgPackagePath = Path.GetFullPath (PkgPackagePath);
args.Add (PkgPackagePath);

Directory.CreateDirectory (Path.GetDirectoryName (PkgPackagePath));
Directory.CreateDirectory (Path.GetDirectoryName (PkgPackagePath)!);

return args;
}
Expand All @@ -133,10 +133,10 @@ void AppendExtraArgs (List<string> args, string extraArgs)

string [] argv = StringUtils.ParseArguments (extraArgs);
var customTags = new Dictionary<string, string> (StringComparer.OrdinalIgnoreCase) {
{ "projectdir", Path.GetDirectoryName (this.ProjectPath) },
{ "projectdir", Path.GetDirectoryName (this.ProjectPath)! },
{ "appbundledir", this.AppBundleDir },
{ "targetpath", Path.Combine (Path.GetDirectoryName (target), Path.GetFileName (target)) },
{ "targetdir", Path.GetDirectoryName (target) },
{ "targetpath", Path.Combine (Path.GetDirectoryName (target)!, Path.GetFileName (target)) },
{ "targetdir", Path.GetDirectoryName (target)! },
{ "targetname", Path.GetFileName (target) },
{ "targetext", Path.GetExtension (target) },
};
Expand Down
2 changes: 1 addition & 1 deletion msbuild/Xamarin.MacDev.Tasks/Tasks/CreatePkgInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public override bool Execute ()
return ExecuteRemotely ();

if (!File.Exists (OutputPath.ItemSpec)) {
Directory.CreateDirectory (Path.GetDirectoryName (OutputPath.ItemSpec));
Directory.CreateDirectory (Path.GetDirectoryName (OutputPath.ItemSpec)!);

using (var stream = File.OpenWrite (OutputPath.ItemSpec)) {
stream.Write (PkgInfoData, 0, PkgInfoData.Length);
Expand Down
Loading
Loading