Je rencontre des problèmes avec un fichier MSBuild que j'essaie de compiler certaines bibliothèques personnalisées.La transformation MSBuild n'évalue pas les caractères génériques
<PropertyGroup>
<FullVersion>10.8.0.0</FullVersion>
</PropertyGroup>
<ItemGroup>
<LibsToBuild Include=".\Lib1">
<Bin>bin\*.*</Bin>
<Project>Library 1</Project>
<Build>ReleaseNoProtect</Build>
<Version>CurrentVersion</Version>
</LibsToBuild>
<LibsToBuild Include=".\Lib2">
<Bin>bin\*.*</Bin>
<Project>Library 2</Project>
<Build>ReleaseLibrary</Build>
<Version>CurrentVersion</Version>
</LibsToBuild>
</ItemGroup>
<ItemGroup>
<LibsToCopy Include="@(LibsToBuild->'%(FullPath)\%(Version)\%(Bin)')" />
</ItemGroup>
<Target Name="BuildLibs">
<MSBuild
Projects="@(LibsToBuild->'%(FullPath)\%(Version)\Build\Build.proj')"
Targets="%(LibsToBuild.Build)"
Properties="Configuration=Release;APP_VERSION=$(FullVersion);PROJECT_NAME=%(LibsToBuild.Project)"
/>
<Copy
SourceFiles="@(LibsToCopy)"
DestinationFiles="@(LibsToCopy->'.\Libraries\CurrentVersion\%(RecursiveDir)%(Filename)%(Extension)')"
/>
<!--
<Exec Command='xcopy /y @(LibsToCopy) .\Libraries\CurrentVersion' />
-->
</Target>
Quand je lance ce par MSBuild, tous les compiles travaillent, mais les fichiers de copie ne fonctionne pas. MSBuild se plaint avec les erreurs suivantes:
Copying file from "X:\Projects\Lib1\Master\bin\*.*" to ".\Libraries\CurrentVersion\*.*".
X:\Projects\Test Release.build(35,3): error MSB3021: Unable to copy file "X:\Projects\Lib1\Master\bin\*.*" to ".\Libraries\CurrentVersion\*.*". Illegal characters in path.
Copying file from "X:\Projects\Lib2\Master\bin\*.*" to ".\Libraries\CurrentVersion\*.*".
X:\Projects\Test Release.build(35,3): error MSB3021: Unable to copy file "X:\Projects\Lib1\Master\bin\*.*" to ".\Libraries\CurrentVersion\*.*". Illegal characters in path.
Je suis incapable de comprendre pourquoi la transformation dans le « LibsToCopy » ItemGroup ne se développe pas les caractères génériques de noms de fichiers.
J'ai également essayé d'utiliser xcopy, mais il n'aime pas non plus les caractères génériques.
Merci! Dave
Merci Romano! Cela a bien fonctionné. Si quelqu'un a une explication de pourquoi ma version originale ne fonctionne pas, je l'apprécierais. Je détesterais que mon build se brise un jour parce que MS a décidé d'éliminer définitivement CreateItem. –
Ces WildCards ne seront pas développés dans Metadata, vous devez créer un élément, puis ils seront développés. –
CreateItem est obsolète dans .NET> 2. Vous pouvez directement créer votre élément avec un ItemGroup dans votre cible dans .NET> 2 –