diff --git a/src/Uno.Wasm.Bootstrap/ShellTask.cs b/src/Uno.Wasm.Bootstrap/ShellTask.cs index 0ebf579..a03708c 100644 --- a/src/Uno.Wasm.Bootstrap/ShellTask.cs +++ b/src/Uno.Wasm.Bootstrap/ShellTask.cs @@ -37,7 +37,7 @@ namespace Uno.Wasm.Bootstrap public partial class ShellTask_v0 : Microsoft.Build.Utilities.Task { private const string WasmScriptsFolder = "WasmScripts"; - private readonly char OtherDirectorySeparatorChar = Path.DirectorySeparatorChar == Path.AltDirectorySeparatorChar ? '\\' : '/'; + private readonly char OtherDirectorySeparatorChar = Path.DirectorySeparatorChar == '/' ? '\\' : '/'; private string _distPath; private string _managedPath; @@ -187,19 +187,39 @@ namespace Uno.Wasm.Bootstrap } } + /// + /// Align paths to fix issues with mixed path + /// + string FixupPath(string path) + => path.Replace(OtherDirectorySeparatorChar, Path.DirectorySeparatorChar); + private void FileCopy(string source, string dest, bool overwrite = false) { - // Straigten paths to fix issues with mixed path - string FixupPath(string path) - => path.Replace(OtherDirectorySeparatorChar, Path.DirectorySeparatorChar); + var sourceFileName = FixupPath(source); + var destFileName = FixupPath(dest); try - { - File.Copy(FixupPath(source), FixupPath(dest), overwrite); + { + File.Copy(sourceFileName, destFileName, overwrite); } catch (Exception) { - Log.LogError($"Failed to copy {source} to {dest}"); + Log.LogError($"Failed to copy {sourceFileName} to {destFileName}"); + throw; + } + } + + private void DirectoryCreateDirectory(string directory) + { + var directoryName = FixupPath(directory); + + try + { + Directory.CreateDirectory(directoryName); + } + catch(Exception e) + { + Log.LogError($"Failed to create directory {directoryName}"); throw; } } @@ -264,7 +284,7 @@ namespace Uno.Wasm.Bootstrap var compressedFileName = fileName; compressedFileName = compressedFileName.Replace(_distPath, compressedPathBase); - Directory.CreateDirectory(Path.GetDirectoryName(compressedFileName)); + DirectoryCreateDirectory(Path.GetDirectoryName(compressedFileName)); if (File.Exists(compressedFileName)) { @@ -360,7 +380,7 @@ namespace Uno.Wasm.Bootstrap var sdkName = Path.GetFileName(MonoWasmSDKPath); var wasmDebuggerRootPath = Path.Combine(IntermediateOutputPath, "wasm-debugger"); - Directory.CreateDirectory(wasmDebuggerRootPath); + DirectoryCreateDirectory(wasmDebuggerRootPath); var debuggerLocalPath = Path.Combine(wasmDebuggerRootPath, sdkName); @@ -373,7 +393,7 @@ namespace Uno.Wasm.Bootstrap Directory.Delete(debugger, recursive: true); } - Directory.CreateDirectory(debuggerLocalPath); + DirectoryCreateDirectory(debuggerLocalPath); string[] debuggerFiles = new[] { "Mono.WebAssembly.DebuggerProxy.dll", @@ -415,7 +435,7 @@ namespace Uno.Wasm.Bootstrap Directory.Delete(workAotPath, true); } - Directory.CreateDirectory(workAotPath); + DirectoryCreateDirectory(workAotPath); var referencePathsParameter = string.Join(" ", _referencedAssemblies.Select(Path.GetDirectoryName).Distinct().Select(r => $"--search-path=\"{r}\"")); var debugOption = RuntimeDebuggerEnabled ? "--debug" : ""; @@ -481,7 +501,7 @@ namespace Uno.Wasm.Bootstrap } Directory.Move(_managedPath, linkerInput); - Directory.CreateDirectory(_managedPath); + DirectoryCreateDirectory(_managedPath); var assemblyPath = Path.Combine(linkerInput, Path.GetFileName(Assembly)); @@ -689,7 +709,7 @@ namespace Uno.Wasm.Bootstrap _managedPath = Path.Combine(_distPath, "managed"); Log.LogMessage($"Creating managed path {_managedPath}"); - Directory.CreateDirectory(_managedPath); + DirectoryCreateDirectory(_managedPath); } private void CopyRuntime() @@ -751,7 +771,7 @@ namespace Uno.Wasm.Bootstrap // Skip WasmScript folder files that may have been added as content files. // This can happen when running the TypeScript compiler. - Directory.CreateDirectory(Path.Combine(_distPath, Path.GetDirectoryName(relativePath))); + DirectoryCreateDirectory(Path.Combine(_distPath, Path.GetDirectoryName(relativePath))); var dest = Path.Combine(_distPath, relativePath); Log.LogMessage($"ContentFile {fullSourcePath} -> {dest}"); diff --git a/src/Uno.Wasm.Sample/Uno.Wasm.Sample.csproj b/src/Uno.Wasm.Sample/Uno.Wasm.Sample.csproj index 4346bf9..2b39f66 100644 --- a/src/Uno.Wasm.Sample/Uno.Wasm.Sample.csproj +++ b/src/Uno.Wasm.Sample/Uno.Wasm.Sample.csproj @@ -27,10 +27,11 @@ - - + + +