diff --git a/src/Tasks/GenerateTrustInfo.cs b/src/Tasks/GenerateTrustInfo.cs index 7d76056879b..26167ac27b2 100644 --- a/src/Tasks/GenerateTrustInfo.cs +++ b/src/Tasks/GenerateTrustInfo.cs @@ -21,8 +21,11 @@ namespace Microsoft.Build.Tasks /// This task generates the application trust from the base manifest /// and the TargetZone and ExcludedPermissions properties. /// - public sealed class GenerateTrustInfo : TaskExtension, IGenerateTrustInfoTaskContract + [MSBuildMultiThreadableTask] + public sealed class GenerateTrustInfo : TaskExtension, IGenerateTrustInfoTaskContract, IMultiThreadableTask { + public TaskEnvironment TaskEnvironment { get; set; } = TaskEnvironment.Fallback; + private const string Custom = "Custom"; public ITaskItem BaseManifest { get; set; } @@ -50,16 +53,20 @@ public override bool Execute() } // Read trust-info from app.manifest - if (BaseManifest != null && FileSystems.Default.FileExists(BaseManifest.ItemSpec)) + if (BaseManifest != null && !string.IsNullOrEmpty(BaseManifest.ItemSpec)) { - try - { - trustInfo.ReadManifest(BaseManifest.ItemSpec); - } - catch (Exception ex) + AbsolutePath baseManifestPath = TaskEnvironment.GetAbsolutePath(BaseManifest.ItemSpec); + if (FileSystems.Default.FileExists(baseManifestPath)) { - Log.LogErrorWithCodeFromResources("GenerateManifest.ReadInputManifestFailed", BaseManifest.ItemSpec, ex.Message); - return false; + try + { + trustInfo.ReadManifest(baseManifestPath); + } + catch (Exception ex) + { + Log.LogErrorWithCodeFromResources("GenerateManifest.ReadInputManifestFailed", BaseManifest.ItemSpec, ex.Message); + return false; + } } } @@ -99,7 +106,8 @@ public override bool Execute() } // Write trust-info back to a stand-alone trust file - trustInfo.Write(TrustInfoFile.ItemSpec); + AbsolutePath trustInfoFilePath = TaskEnvironment.GetAbsolutePath(TrustInfoFile.ItemSpec); + trustInfo.Write(trustInfoFilePath); return true; } @@ -107,6 +115,7 @@ public override bool Execute() #else + [MSBuildMultiThreadableTask] public sealed class GenerateTrustInfo : TaskRequiresFramework, IGenerateTrustInfoTaskContract { public GenerateTrustInfo()