【发布时间】:2021-11-14 21:44:11
【问题描述】:
我需要在我的 csproj 文件中添加一个目标,该文件指定输入文件和输出文件。 通过this 链接,我尝试像这样定义我的目标:
<ItemGroup>
<ins Include="A.txt" />
<outs Include="B.txt" />
</ItemGroup>
<Target Name="ExecuteTarget" Inputs="@(ins)" Outputs="@(outs)">
<Exec Command="echo hello world" />
</Target>
这里的目的是当且仅当文件 A.txt 比 B.txt 更新或 B.txt 不存在时,每次在 VS IDE 中构建 csproj 时,在 Visual Studio 输出窗口中回显 hello world。 A.txt 和 B.txt 都与 csproj 文件存在于同一目录中。
但是,这似乎不起作用,因为当我构建这个 csproj 时,我无法在输出窗口中打印字符串“hello world”。我正在使用 VS 16.11.5 以及启用 .NET 5.0 的 csproj (WinUI)。
任何帮助/想法/建议将不胜感激。
【问题讨论】:
-
有几件事要检查: - Crank up the output verbosity IDE 中的 MSBuild。 - 然后检查输出窗口是否实际调用了您的目标(或者甚至考虑:MSBuild 将写入一条消息,如输入/输出已过期等)。从命令行运行项目文件,不提供 ins 或 outs 打印消息,这是预期的行为(在没有所有 ins/outs 的情况下)。
标签: c# visual-studio msbuild csproj