From e656ce5ce119996bdbd72311a4ffc979c81049f3 Mon Sep 17 00:00:00 2001 From: jcant0n Date: Sun, 9 Aug 2026 00:39:57 +0200 Subject: [PATCH] fix: a double hyphen in an XML comment made the targets file unloadable MSB4024: The imported project file ... could not be loaded XML forbids "--" inside a comment, and line 42 had one. A targets file that does not parse is not skipped, it stops the import, so every consumer of the package failed on every platform. The last CD run lost all eight smoke legs to it, including the five that had nothing to do with the change. The comment now says the same thing without the hyphens. Nothing in CI could have caught this. The common workflow builds the binding project and packs it; the targets file is only read by a consumer, so a malformed one passes every check in the repository and breaks downstream, with an error naming the consumer rather than the file. Five repositories in the fleet ship one of these. A parse check in the toolbox is the follow-up, and it is worth more than this fix. --- .../buildTransitive/Evergine.Bindings.CesiumNative.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Evergine.Bindings.CesiumNative/buildTransitive/Evergine.Bindings.CesiumNative.targets b/Evergine.Bindings.CesiumNative/buildTransitive/Evergine.Bindings.CesiumNative.targets index aa29305..c8a27f9 100644 --- a/Evergine.Bindings.CesiumNative/buildTransitive/Evergine.Bindings.CesiumNative.targets +++ b/Evergine.Bindings.CesiumNative/buildTransitive/Evergine.Bindings.CesiumNative.targets @@ -39,8 +39,8 @@ What ForceLoad protects against is real, though: the linker keeps only the members something references, and a symbol reached solely through a P/Invoke could be dropped. The - package smoke test is what makes this safe to turn off -- it reads the built executable - and fails if cesium_async_system_create is not among its defined symbols. + package smoke test is what makes this safe to turn off rather than hopeful: it reads the + built executable and fails if cesium_async_system_create is not among its defined symbols. Which runtime identifier to pick is decided by the platform rather than by $(RuntimeIdentifier), unlike the wasm block above: an iOS build may be for a device or for