C# 在MsBuild中,什么';属性组和项目组之间的区别是什么
我可以编译C# 在MsBuild中,什么';属性组和项目组之间的区别是什么,c#,visual-studio,msbuild,C#,Visual Studio,Msbuild,我可以编译属性组引用的.cs文件: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <AssemblyName>MSBuildSample</AssemblyName> <OutputPath>Bin\</OutputPath> <Compi
属性组
引用的.cs
文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AssemblyName>MSBuildSample</AssemblyName>
<OutputPath>Bin\</OutputPath>
<Compile>helloConfig.cs</Compile>
</PropertyGroup>
<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="$(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe"/>
</Target>
</Project>
MSBuildSample
垃圾箱\
helloConfig.cs
或者使用ItemGroup执行相同的操作:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Compile Include="helloConfig.cs" />
</ItemGroup>
<PropertyGroup>
<AssemblyName>MSBuildSample</AssemblyName>
<OutputPath>Bin\</OutputPath>
</PropertyGroup>
<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe"/>
</Target>
</Project>
MSBuildSample
垃圾箱\
我知道使用
ItemGroup
应该是首选方法,但是我应该在什么时候使用这些属性中的每一个呢?将属性组看作是单个变量的集合,属性只能包含一个值
而itemgroup类似于一个数组或集合,它可以保存零、一个或多个值。您还可以迭代项目组,这在您希望对多个项目执行相同任务时非常有用。一个常见的例子是编译许多文件。ItemGroup值也可以有多个属性,包括定义的“架构”。属性是严格意义上的单字符串值。@David很好地解释了这一差异。我觉得我可以将ItemGroup用于我的用例“将文件/目录从不同的源路径复制到具有相同子目录的部署路径”,即复制xyz*.dll以部署\xyz*.dll;将abc\images*.jpg复制到deploy\abc\images*.jpg(在这里,我想使用一个任务来执行我的100个这样的副本)您能告诉我它是如何工作的吗?(详细需求说明见)