Exe net48 12.0 enable D365MetadataBridge D365MetadataBridge false true true MSB3277;MSB3106 K:\AosService\PackagesLocalDirectory\bin C:\AosService\PackagesLocalDirectory\bin J:\AosService\PackagesLocalDirectory\bin I:\AosService\PackagesLocalDirectory\bin D:\AosService\PackagesLocalDirectory\bin E:\AosService\PackagesLocalDirectory\bin F:\AosService\PackagesLocalDirectory\bin G:\AosService\PackagesLocalDirectory\bin H:\AosService\PackagesLocalDirectory\bin L:\AosService\PackagesLocalDirectory\bin M:\AosService\PackagesLocalDirectory\bin N:\AosService\PackagesLocalDirectory\bin O:\AosService\PackagesLocalDirectory\bin P:\AosService\PackagesLocalDirectory\bin Q:\AosService\PackagesLocalDirectory\bin R:\AosService\PackagesLocalDirectory\bin S:\AosService\PackagesLocalDirectory\bin T:\AosService\PackagesLocalDirectory\bin U:\AosService\PackagesLocalDirectory\bin V:\AosService\PackagesLocalDirectory\bin W:\AosService\PackagesLocalDirectory\bin X:\AosService\PackagesLocalDirectory\bin Y:\AosService\PackagesLocalDirectory\bin Z:\AosService\PackagesLocalDirectory\bin all runtime; build; native; contentfiles; analyzers false <_MetamodelDll>$(D365BinPath)\Microsoft.Dynamics.AX.Metadata.dll Version = System.Diagnostics.FileVersionInfo.GetVersionInfo(FilePath).FileVersion ?? ""; (); var pending = new System.Collections.Generic.Stack(); pending.Push(System.IO.Path.GetFullPath(ProjectDir).TrimEnd('\\', '/')); while (pending.Count > 0) { var dir = pending.Pop(); foreach (var sub in System.IO.Directory.GetDirectories(dir)) { var name = System.IO.Path.GetFileName(sub); if (name != "obj" && name != "bin") pending.Push(sub); } foreach (var file in System.IO.Directory.GetFiles(dir)) if (file.EndsWith(".cs", System.StringComparison.Ordinal) || file.EndsWith(".csproj", System.StringComparison.Ordinal)) files.Add(file); } files.Sort(System.StringComparer.Ordinal); var root = System.IO.Path.GetFullPath(RepoRoot).TrimEnd('\\', '/'); var manifest = new System.Text.StringBuilder(); using (var sha = System.Security.Cryptography.SHA256.Create()) { foreach (var file in files) { var rel = file.Substring(root.Length).TrimStart('\\', '/').Replace('\\', '/'); var content = new System.Text.UTF8Encoding(false).GetString(System.IO.File.ReadAllBytes(file)).Replace("\r\n", "\n"); var fileHash = System.BitConverter.ToString(sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(content))).Replace("-", "").ToLowerInvariant(); manifest.Append(rel).Append(':').Append(fileHash).Append('\n'); } var hash = System.BitConverter.ToString(sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(manifest.ToString()))).Replace("-", "").ToLowerInvariant(); System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(System.IO.Path.GetFullPath(OutputFile))); System.IO.File.WriteAllText(OutputFile, "{\n \"sourceHash\": \"" + hash + "\",\n \"sourceFileCount\": " + files.Count + ",\n \"builtAt\": \"" + System.DateTime.UtcNow.ToString("o") + "\"\n}\n"); } ]]>