MSBuild,CreateItem到ItemGroup将目标放置到多个文件夹
短篇故事:我有一个属性为true的列表。我想把所有这些文件复制到一个文件夹列表中,比如说由 文件夹 为此,我今天要做的是:MSBuild,CreateItem到ItemGroup将目标放置到多个文件夹,msbuild,itemgroup,createitem,Msbuild,Itemgroup,Createitem,短篇故事:我有一个属性为true的列表。我想把所有这些文件复制到一个文件夹列表中,比如说由 文件夹 为此,我今天要做的是: <CreateItem Include="%(Reference.HintPath)" Condition="'%(Reference.Binplace)' == 'true'" AdditionalMetadata="DestinationFolder=$(DestinationForRefer
<CreateItem Include="%(Reference.HintPath)"
Condition="'%(Reference.Binplace)' == 'true'"
AdditionalMetadata="DestinationFolder=$(DestinationForReferences)\%(Reference.BinplaceFolder)">
<Output ItemName="Binplace" TaskParameter="Include" />
</CreateItem>
我已经有一个名为Binplace的目标,它在内部调用Copy。问题是这是一个元素,我不知道如何在多个项目上调用Copy
在我的CSPROJ文件中,我这样做:
<Reference Include="MyCompany.Something.Something">
<HintPath>$(LocalLibraryFolder)\MyCompany.Something.Something.dll</HintPath>
<Binplace>true</Binplace>
</Reference>
$(LocalLibraryFolder)\MyCompany.Something.Something.dll
真的
$(LocalLibraryFolder)\1.dll
真的
子文件夹1 \子文件夹12
$(LocalLibraryFolder)\2.dll
真的
子文件夹2\子文件夹22
.
.
$(DestinationForReferences)\%(Reference.BinplaceFolder)
$(LocalLibraryFolder)\1.dll
真的
子文件夹1 \子文件夹12
$(LocalLibraryFolder)\2.dll
真的
子文件夹2\子文件夹22
.
.
$(DestinationForReferences)\%(Reference.BinplaceFolder)
抱歉,请将此内容阅读三遍,我不知道您要完成的是什么,或者问题是什么,能否为您的问题添加一系列其他详细信息?添加了更多信息,这是否有帮助?您的文本提到了名为“someFolder”的文件夹,但我在msbuild中没有看到它被引用。您需要显示您的“Binplace”目标。“Binplace”目标与.csproj的关系如何?它是在导入的目标文件中还是在单独的MSBuild项目中?抱歉,请阅读三遍,我不知道您试图完成什么,或者问题是什么,您能否为您的问题添加一系列其他详细信息?添加了更多信息,这有帮助吗?您的文本提到了一个名为“someFolder”的文件夹,但我在msbuild中没有看到它被引用。您需要显示您的“Binplace”目标。“Binplace”目标与.csproj的关系如何?它是在导入的目标文件中还是在单独的MSBuild项目中?您可能会反过来得到它。我需要我的propertygroup有一个要部署到的位置列表。所以folder1folder2和Binplacefolder的意思就是把这个特定的文件夹放到别处,但是如果这个字段不存在,就把它放到propertygroup@gaganuprasad我认为您对PropertyGroup构造的工作原理感到困惑。它只允许您创建不同的变量,而不允许创建集合。PropertyGroup标记只允许您将这些属性分组到xml中的同一位置,而不会以任何其他方式将它们关联起来。我需要我的propertygroup有一个要部署到的位置列表。所以folder1folder2和Binplacefolder的意思就是把这个特定的文件夹放到别处,但是如果这个字段不存在,就把它放到propertygroup@gaganuprasad我认为您对PropertyGroup构造的工作原理感到困惑。它只允许您创建不同的变量,而不允许创建集合。PropertyGroup标记只允许您将这些属性分组到xml中的同一位置,而不以任何其他方式将它们关联起来。
<ItemGroup>
<Reference Include="1">
<HintPath>$(LocalLibraryFolder)\1.dll</HintPath>
<Binplace>true</Binplace>
<BinplaceFolder>SubFolder1\SubFolder12</BinplaceFolder>
</Reference>
<Reference Include="2">
<HintPath>$(LocalLibraryFolder)\2.dll</HintPath>
<Binplace>true</Binplace>
<BinplaceFolder>SubFolder2\SubFolder22</BinplaceFolder>
</Reference>
</ItemGroup>
<PropertyGroup>
<LocalLibraryFolder>.</LocalLibraryFolder>
<DestinationForReferences>.</DestinationForReferences>
</PropertyGroup>
<Target Name="CopyReferencedBinaries"
Outputs="%(Reference.Identity)">
<ItemGroup>
<SourceBinaryFullPath Include="%(Reference.HintPath)" />
</ItemGroup>
<PropertyGroup>
<SourceBinaryDir>$(DestinationForReferences)\%(Reference.BinplaceFolder)</SourceBinaryDir>
</PropertyGroup>
<MakeDir Directories="$(SourceBinaryDir)"
Condition="!Exists('$(SourceBinaryDir)')"/>
<Copy SourceFiles="@(SourceBinaryFullPath)"
DestinationFiles="@(SourceBinaryFullPath->'$(SourceBinaryDir)\%(Filename)%(Extension)')" />
</Target>