2010-08-03 2 views
2

일부 사용자 지정 라이브러리를 컴파일하려고하는 MSBuild 파일에 문제가 있습니다. 와일드 카드를 평가하지 않는 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에서 다음과 같은 오류가 불평 :

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를 사용하려고 시도했지만 와일드 카드도 마음에 들지 않습니다.

감사합니다. 데이브

답변

1

나는 비슷한 문제가있었습니다. 단지

<CreateItem Include="@(LibsToBuild->'%(FullPath)\%(Version)\%(Bin)')"> 
    <Output TaskParameter="Include" ItemName="LibsToCopy" /> 
</CreateItem> 

불행하게도 문서가 CreateItem 작업이되지 않습니다 말한다 <Copy> 작업하기 전에,이 시도, 그래서 나는 미래에 TIS 문제를 해결하는 방법을 모르겠어요.

+0

감사합니다. Romano! 그 일은 훌륭했습니다. 누구라도 내 원본 버전이 작동하지 않는 이유에 대한 설명이 있으면 감사하게 생각합니다. MS는 마침내 CreateItem을 제거하기로 결정 했으므로 언젠가는 미래를 망칠 수있는 빌드를 싫어합니다. –

+0

이러한 와일드 카드는 메타 데이터에서 확장되지 않으므로 항목을 만들어야 확장됩니다. –

+0

CreateItem은 .NET> 2.에서 더 이상 사용되지 않습니다. 대상에 ItemGroup을 사용하여 항목을 .NET> 2로 직접 만들 수 있습니다 –

관련 문제