包括在MSBuild中单独指定目录的文件
这看起来应该很简单,但我无法从参考资料中计算出来,而且我的google fu显然很弱 我只想在构建文件中分别指定文件名和基本文件夹包括在MSBuild中单独指定目录的文件,msbuild,Msbuild,这看起来应该很简单,但我无法从参考资料中计算出来,而且我的google fu显然很弱 我只想在构建文件中分别指定文件名和基本文件夹 <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <TestFile
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TestFilesWithFolder>
B:\Root\Test1.*;
B:\Root\Test2.*
</TestFilesWithFolder>
<TestFiles>Test1.*;Test2.*</TestFiles>
<TestFileRoot>B:\Root</TestFileRoot>
</PropertyGroup>
<Target Name="Build">
<ItemGroup>
<TestFilesGroupWithFolder Include="$(TestFilesWithFolder)" />
<TestFilesGroup Include="$(TestFileRoot)\$(TestFiles)" />
</ItemGroup>
<Warning Text="Source files with folder: @(TestFilesGroupWithFolder)" />
<Warning Text="Source files: @(TestFilesGroup)" />
</Target>
</Project>
B:\Root\Test1.*;
B:\Root\Test2*
测试1.*;测试2*
B:\Root
当我运行此命令时,第一个警告将按预期显示两个文件,但第二个警告仅显示第一个文件(因为直接字符串concat将文件夹名称放在第一个文件上,而不是第二个文件上)
如何使ItemGroup“TestFileGroup”同时包含给定“TestFiles”和“TestFileRoot”属性的文件?可以将分号分隔的事物列表转换为一个项,这将使这成为可能,但属性中的项包含通配符,因此,如果希望MSBuild将它们视为列表中的项,则在MSBuild首次看到它们时,路径必须有效。也许有办法做到这一点,但我想不出一个办法。换句话说
<ItemGroup>
<TestFiles Include="$(TestFiles)" />
</ItemGroup>
可以将以分号分隔的事物列表转换为项,这将使这成为可能,但属性中的项包含通配符除外,因此,如果希望MSBuild将它们视为列表中的项,则在MSBuild首次看到它们时,路径必须有效。也许有办法做到这一点,但我想不出一个办法。换句话说
<ItemGroup>
<TestFiles Include="$(TestFiles)" />
</ItemGroup>
谢谢你非常详细的回答。我花了一段时间才弄明白这些模式是如何相互关联的,但我现在已经开始工作了。谢谢你提供了非常详细的答案。我花了一段时间才弄明白这些模式是如何相互关联的,但我现在已经开始工作了。
(Build target) ->
d:\Code\My.proj(80,5): warning : Source files with folder:
D:\Code\Test1.txt;D:\Code\Test2.txt
d:\Code\My.proj(84,5): warning : Source files:
D:\Code\Test1.txt;D:\Code\Test2.txt