Roslyn 分析器已知问题 传递项目属性时将忽略分号之后的内容

news/2025/3/12 7:14:33/文章来源:https://www.cnblogs.com/lindexi/p/18766604

相关问题链接:

  • https://github.com/dotnet/roslyn/issues/43970
  • https://github.com/dotnet/roslyn/issues/51692

此问题由 walterlv 发现,我只是一个记录问题的工具人

解决方案

将需要传递的值进行 Base64 编码,避免 ;# 和换行符的影响。

此方案来自于: https://github.com/dotnet/roslyn/issues/51692

不足之处,这是一个十分奇怪的行为,先 Base64 编码,再 Base64 解码。这个过程只是为了断开表达式关系,代码也不优雅

其他无效的解决方案

1.是否可以通过 Replace 来替换掉 ; 字符?

经过测试,此方案仅在原属性是字符串常量时才正常工作;当原属性是 MSBuild 计算出来的值时,Replace 会导致把计算过程表达式当作字符串常量来处理,导致替换完之后表达式变成了字符串结果了。

2.是否可在 Target 中替换字符?

经过测试,在多个 Target 中替换都会得到跟上述相同的结果。

3.是否可通过 $([MSBuild]::Escape('$(Foo)')) 转义来规避?

经过测试,会得到跟上述相同的结果

文档

微软官方的 CookBook 中完全没有提及此问题:

  • https://github.com/dotnet/roslyn/blob/main/docs/features/incremental-generators.cookbook.md

有网友主动为 CookBook 提交了此问题的规避方案: https://github.com/dotnet/roslyn/pull/76818

不过此规避方案也仅在字符串常量时有效,不适用于本方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897520.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Avalonia 已知问题 继承滚动条将让里层控件无法获得无穷大空间

本文记录 Avalonia 的一个已知问题,如果有代码里面编写一个类型继承 ScrollViewer 类型,然后这个类型里面啥都不做。那将会导致所有放在此滚动条里面的控件无法获取无穷大的空间,其宽高无法撑开,被限定为上层容器尺寸复现步骤如下:新建一个 FooScrollViewer 类型,让其继承…

读DAMA数据管理知识体系指南17数据存储和操作治理

读DAMA数据管理知识体系指南17数据存储和操作治理1. 管理数据库性能 1.1. 数据库的性能取决于两个相互依赖的因素:可用性和响应速度 1.2. 性能包括确保空间的可用性、查询优化以及其他能使数据库以有效的方式返回数据的因素1.2.1. 如果没有可用性,就无法衡量数据库的性能1.2.…

干货分享!厦大140页PPT读懂大模型,从概念到实践

干货分享!厦大140页PPT读懂大模型 《厦门大学:大模型概念、技术与应用实践》 是由厦门大学大数据教学团队出品的DeepSeek科普类内容。文章涵盖:人工智能发展简史 人工智能思维 大模型:人工智能的前沿 AIGC应用与实践内容分享:引言 在数字化浪潮汹涌澎湃的当下,大模型如同…

一款基于.NET开源、强大的网络管理和网络问题排查工具!

前言 今天大姚给大家分享一款基于.NET开源、免费、功能强大的网络管理和网络问题排查工具:NETworkManager。 项目介绍 NETworkManager 是一个基于.NET开源(GPL-3.0 license)、免费、功能强大的开源工具,旨在帮助用户管理和解决网络问题。通过提供一系列网络连接和管理工具,…

Palera1n之苹果手机越狱,iOS15~iOS 18有根越狱方法

iOS15/16/17/18越狱教程用到的工具为palra1n ,该工具支持使用Sileo商店并安装插件。其他越狱方式可参考:https://www.cnblogs.com/codtina/可以添加对其他 arm64 Darwin 设备的支持,包括 Apple TV、HomePod 和 Darwin 21 及更高版本上的 iBridge,但目前不受支持。 永远不会支…

Palera1n苹果手机越狱,iOS15~iOS 18有根越狱方法

iOS15/16/17/18越狱教程用到的工具为palra1n ,该工具支持使用Sileo商店并安装插件。其他越狱方式可参考:https://www.cnblogs.com/codtina/可以添加对其他 arm64 Darwin 设备的支持,包括 Apple TV、HomePod 和 Darwin 21 及更高版本上的 iBridge,但目前不受支持。 永远不会支…

Palera1n iOS15.8.2~iOS 18有根越狱教程

iOS15/16/17/18越狱教程用到的工具为palra1n ,该工具支持使用Sileo商店并安装插件。可以添加对其他 arm64 Darwin 设备的支持,包括 Apple TV、HomePod 和 Darwin 21 及更高版本上的 iBridge,但目前不受支持。 永远不会支持 arm64e 设备。A11设备在使用前需要关闭锁屏密码,如…

POV vs FPV All In One

POV vs FPV All In One FPV 只是 POV 的一种特殊形式 ✅ point-of-view 视点 first-person view 第一人称视角POV vs FPV All In OneFPV 只是 POV 的一种特殊形式 ✅FPV is similar to the POV drone shot—however, the equipment makes the shooting experience quite differ…

【CodeForces训练记录】Codeforces Round 1009 (Div. 3)

训练情况赛后反思 大翻车,C题打表直接开猜,D题想到了转化行贡献再线段覆盖,但是不会算时间复杂度没敢写,后来试了一发给过了 A题 显然四个点都在坐标轴上,构成正方形只有四个数相等的情况点击查看代码 #include <bits/stdc++.h> // #define int long long #define e…

Cilium Ingress及插件的高级特性

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.启用Cilium Ingress Controller1.Cilium Ingress Controller概述2.启用Cilium Ingress Controller3.部署metallb组件4.测试Ingress规则之dedicated模式5.测试Ingress规则之shared模式二.Cilium高级特性…

pycharm基础使用方法

https://blog.csdn.net/MikexunP/article/details/89414928 基本配置 我们安装好PyCharm后,首先要进行一些小配置,比如主题,字体,字体颜色等。 我们打开PyCharm后,点开file,找到Setting 然后就会跳出Setting的窗口 可以说PyCharm的各种配置都需要在这里配置,现在我们进入…

FastAPI 错误处理与自定义错误消息完全指南:构建健壮的 API 应用 ️

title: FastAPI 错误处理与自定义错误消息完全指南:构建健壮的 API 应用 🛠️ date: 2025/3/12 updated: 2025/3/12 author: cmdragon excerpt: 我们将涵盖常见的错误类型、如何捕获和处理这些错误、以及如何返回自定义的错误消息。通过实例和最佳实践,您将能够有效地应对…