MSBuild نسخة المهمة لن نسخ الملفات في المرة الأولى

StackOverflow https://stackoverflow.com/questions/606605

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا إنشاء ملف build.proj الذي يتكون من مهمة لنسخ الملفات التي سيتم إنشاؤها بعد اكتمال بناء. والمشكلة هي أن هذه الملفات لا يتم نسخ المرة الأولى ولدي لتشغيل msbuild مرة أخرى على build.proj بحيث يمكن نسخ الملفات. يرجى يمكن لأحد أن يقول لي ما الخطأ مع الملف build.proj التالية:

<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>

<SourcePath Condition="'$(SourcePath)' == ''">$(MSBuildProjectDirectory)</SourcePath> 

<BuildDir>$(SourcePath)\build</BuildDir>

</PropertyGroup> 

<ItemGroup> 
    <Projects 
       Include="$(SourcePath)\src\myApp\application.csproj">  
    </Projects> 
</ItemGroup> 

<Target Name="Build">
   <Message text = "Building project" />    
   <MSBuild   
     Projects="@(Projects)" 
     Properties="Configuration=$(Configuration)" /> 
</Target>

<ItemGroup>
   <OutputFiles Include ="$(MSBuildProjectDirectory)\**\**\bin\Debug\*.*"/>
</ItemGroup>

<Target Name="CopyToBuildFolder">
   <Message text = "Copying build items" />
   <Copy SourceFiles="@(OutputFiles)" DestinationFolder="$(BuildDir)"/>
</Target>

<Target Name="All"
   DependsOnTargets="Build; CopyToBuildFolder"/>

</Project> 
هل كانت مفيدة؟

المحلول

ويتم تقييم itemgroups عند تحليل النصي. في ذلك الوقت الملفات الخاصة بك ليست هناك حتى الآن. لتكون قادرة على العثور على الملفات التي سيكون لديك لملء itemgroup من داخل المرمى.

  <!-- SQL Scripts which are needed for deployment -->
  <Target Name="BeforeCopySqlScripts">
    <CreateItem Include="$(SolutionRoot)\04\**\Databases\**\*.sql">
      <Output ItemName="CopySqlScript" TaskParameter="Include"/>
    </CreateItem>
  </Target>

وهذا المثال يخلق ItemGroup المسمى "CopySqlScript" باستخدام التعبير في تضمين السمة.

وتحرير:

والآن أستطيع أن أقرأ السيناريو الخاص بك: إضافة علامة CreateItem بصورة داخل الهدف CopyToBuildFolder بك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top