Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MsBuild中,什么';属性组和项目组之间的区别是什么_C#_Visual Studio_Msbuild - Fatal编程技术网

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个这样的副本)您能告诉我它是如何工作的吗?(详细需求说明见)