2
我正在嘗試編譯一些自定義庫的MSBuild文件出現問題。MSBuild轉換不評估通配符
<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>
當我通過MSBuild的運行它,所有的編譯的工作,但複製的文件沒有。 MSBuild的抱怨與以下錯誤:
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.
我無法弄清楚,爲什麼在「LibsToCopy」的ItemGroup轉換不擴展文件名通配符。
我也試圖使用xcopy,但它不喜歡通配符。
謝謝! Dave
謝謝羅馬諾!這很好。如果任何人有解釋爲什麼我的原始版本不起作用,我會很感激。我恨我的構建在未來有一天會破產,因爲MS決定最終消除CreateItem。 – 2010-08-03 17:22:06
這些通配符不會在元數據中擴展,您必須創建一個項目然後才能擴展它們。 – 2010-08-04 07:08:54
CreateItem在.NET> 2中不推薦使用。您可以直接在.NET> 2的目標中使用ItemGroup創建項目 – 2010-08-04 07:29:48