gpt4 book ai didi

c# - 属性函数的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:12 25 4
gpt4 key购买 nike

我正在定制我的构建过程,我遇到了一个有趣的行为。当使用字符串属性函数并更改某些字符串时,构建开始中断。

例如,我正在尝试做这件事:

<PropertyGroup>
<BuildDependsOn>$(BuildDependsOn.Replace(";MyTarget", ""))</BuildDependsOn>
</PropertyGroup>

MyTarget 是我要从 BuildDependsOn 属性中删除的自定义目标。当我尝试执行此操作时,字符串似乎已被正确删除,但我收到目标不存在的错误消息(这在 Visual Studio 2010 和命令行 MSBuild 中都会发生)。

错误如下:

The target "EntityDeploy;

BeforeBuild;
CoreBuild;
AfterBuild" does not exist in the project.

我认为,一旦我修改了这个属性,MSBuild 就会停止解析它的值,并试图寻找一个目标(包括空格、回车符和换行符):

"EntityDeploy;

BeforeBuild;
CoreBuild;
AfterBuild"

并抛出这样的目标不存在的错误。

我还尝试执行一些更琐碎的事情来了解有关此问题的更多信息,并且我尝试执行此操作:

<PropertyGroup>
<BuildDependsOn>$(BuildDependsOn.Trim())</BuildDependsOn>
</PropertyGroup>

错误也再次出现在 Trim() 函数中。有什么想法吗?

编辑:我尝试调试并找出问题所在,我遇到了这个:在执行Trim() 方法之前检查属性BuildDependsOn 时,它的值是这样的:

Value   "BuildDependsOn"="\r\n      EntityDeploy;\r\n      \r\n            BeforeBuild;\r\n            CoreBuild;\r\n            AfterBuild\r\n        \r\n    "
EvaluatedValue "\r\n EntityDeploy;\r\n \r\n BeforeBuild;\r\n CoreBuild;\r\n AfterBuild\r\n \r\n " string
escapedValue "\r\n EntityDeploy;\r\n \r\n BeforeBuild;\r\n CoreBuild;\r\n AfterBuild\r\n \r\n " string

Trim()方法之后,属性值是这样的:

Value   "BuildDependsOn"="EntityDeploy%3b\r\n      \r\n            BeforeBuild%3b\r\n            CoreBuild%3b\r\n            AfterBuild"
EvaluatedValue "EntityDeploy;\r\n \r\n BeforeBuild;\r\n CoreBuild;\r\n AfterBuild" string
escapedValue "EntityDeploy%3b\r\n \r\n BeforeBuild%3b\r\n CoreBuild%3b\r\n AfterBuild" string

可能是分号 (; <=> %3b) 破坏了构建?我该如何解决这个问题?

最佳答案

我尝试了您所做的(向 BuildDependsOn 添加了一个 trim)并且它正在工作。

 <BuildDependsOn>
ConfigBeforeBuild;
$(BuildDependsOn.Trim());
ConfigAfterBuild
</BuildDependsOn>

您是否为 msbuild 启用了调试?如果不是一切都得到解释here .

好的,这是解决方案(我的也没用,我的测试不正确):

<BuildDependsOn>
$([MSBuild]::Unescape($(BuildDependsOn.Replace(";MyTarget", ""))))
</BuildDependsOn>

您必须对字符串进行转义才能删除 %3b。

关于c# - 属性函数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10023681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com