msbuild - لوصف - اعدادات مشرفي المواقع



ملف مشروع مسبويلد: نسخ العنصر إلى موقع محدد في دليل الإخراج (2)

حاولت هذا و مسبويلد يريد دائما لنسخ الملفات باستخدام مسار الدليل الخاص بهم، ولكن هناك حل بديل ...

قم بتحرير ملف كبروج وبعد هذا السطر:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

أضف هذه الأسطر:

  <PropertyGroup>
    <PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyCopyFilesToOutputDirectory</PrepareForRunDependsOn>
  </PropertyGroup>

  <Target Name="MyCopyFilesToOutputDirectory">
    <Copy SourceFiles="@(None)" DestinationFolder="$(OutDir)" />
  </Target>

تحدث نسخة من ملفات الإخراج في الهدف بريباريفورون. هذا يضيف الهدف الخاص بك إلى قائمة الأهداف التي يتم تنفيذها كجزء من بريباريفورون.

يقوم هذا المثال بنسخ كافة العناصر الموجودة في مجموعة العناصر بلا. يمكنك إنشاء مجموعة العناصر الخاصة بك (على سبيل المثال ميفيلز) والقيام نسخة على مجموعة البند إذا كان لديك ملفات "لا شيء" أخرى لا تريد نسخها. عندما حاولت هذا كان لي لتغيير اسم مجموعة البند عن طريق تحرير ملف كبروج مباشرة. لم يسمح لي فيسوال ستوديو تعيين مجموعة عنصر من ملف من واجهة المستخدم، ولكن بعد تحرير سبروج وتغييره، عرض فيسوال ستوديو اسم مجموعة العناصر المخصصة بشكل صحيح.

في عملية تنظيف بنية المجلد / الملف على المشروع الذي ورثته، أنا في مشكلة في تنظيم المكتبات الخارجية المطلوبة. أريد الاحتفاظ بها في الخاصة بهم .\dll\ المجلد، ولكنهم لا يتم نسخها إلى دليل البناء بشكل صحيح. يجب أن تكون في دليل بناء الجذر، ولكن يتم نقلها إلى مجلد فرعي بدلا من ذلك.

يحتوي ملف .csproj على شمل التالية:

<Project>
  <ItemGroup>
    <None Include="dlls\libraryA.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

ثم، بناء، يتم نسخ الملف libraryA.dll إلى المجلد bin\Debug\dll\ libraryA.dll bin\Debug\dll\ ، ولكن أريد ذلك في المجلد bin\Debug\ .






csproj