gpt4 book ai didi

c# - MSBuild 自动更正变量定义而不被告知

转载 作者:行者123 更新时间:2023-11-30 18:31:51 26 4
gpt4 key购买 nike

这是我遇到的一个很奇怪的问题。在构建期间,我有将在某些文件上运行的自定义脚本。这些脚本之一将在创建新文件时重写原始文件的部分内容。下面是目标:

<Target Name="GenerateWSHooksTarget" Outputs="%(AllFoundItems.Hooks)" Condition="'$(FoundFiles)'=='true'">
<ReadLinesFromFile File="%(AllFoundItems.FullPath)">
<Output TaskParameter="Lines" ItemName="FileOutputEscaped"/>
</ReadLinesFromFile>

<ItemGroup>
<FileOutputEscaped>
<Escaped>%(FileOutputEscaped.Identity)</Escaped>
<Unescaped>$([MSBuild]::Unescape('%(FileOutputEscaped.Identity)'))</Unescaped>
</FileOutputEscaped>
<FileOutput Include="@(FileOutputEscaped->'%(Unescaped)')" />
</ItemGroup>

<WSHooks ClassName="%(AllFoundItems.Classname)" ImportName="$(MSBuildProjectName)" FileData="@(FileOutput)">
<Output TaskParameter="NewFileData" ItemName="WSHooksOutput"/>
<Output TaskParameter="RewriteFileData" ItemName="WSRewriteOutput"/>
<Output TaskParameter="Changed" ItemName="WSHooksChanged"/>
</WSHooks>

<Message Importance="Normal" Text="Changed: @(WSHooksChanged)"/>
<WriteLinesToFile File="%(AllFoundItems.Hooks)" Lines="@(WSHooksOutput)" Overwrite="True" />
<WriteLinesToFile File="%(AllFoundItems.FullPath)" Lines="@(WSRewriteOutput)" Overwrite="True" Condition="@(WSHooksChanged)=='true'" />
</Target>

它经历了 4 个基本步骤。

  1. 读入文件中的所有行
  2. 从读取的行中取消转义。
  3. 将未转义的输出传递给自定义任务。
  4. 将自定义任务的输出写入文件。

在将行传递给自定义任务之前的某处,它们被修改了。它将声明从 Trade Trade = new Trade() 更改为 Trade trade = new Trade()(我意识到 capital 变量是不好的做法,这只是一个例子发生在我的构建过程中。)构建还自动更正了一个类,从 ProductionFoecastProductionForecast

我感觉 StyleCop 或 FxCop 正在以某种方式运行,但我没有看到它正在运行。我还正在导入 MSBuildExtensions 任务文件,但现在仅将其用于搜索。

关于在我的自定义任务中获取文件之前修改我的文件的任何想法?

编辑:我想强调的是,这只发生在变量的声明中。因此,当它将 Trade 更改为 trade 时,它只会发生一次,其余 Trade 的出现将保持原样。这自然会破坏构建。

最佳答案

到目前为止,我的解决方案是直接在自定义任务中读取文件。这不是一个很好的解决方案,因为它没有解释为什么 MSBuild 变得有意识并开始纠正拼写,但它是一种解决方法。我将不回答这个问题,希望有人能解释实际发生的事情。

关于c# - MSBuild 自动更正变量定义而不被告知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452796/

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