سؤال

لقد كنت أحاول العمل على التصغير والتجميع في مشروع MVC3 الخاص بي لبعض الوقت، حيث قمت بتجربة عدد لا بأس به من الضواغط والأساليب المختلفة.لقد استقرت أخيرًا على استخدام Microsoft Ajax Minifier عبر مهمة msbuild في ملف المشروع الخاص بي.أنا فقط حتى الآن في التكوين الخاص بي، لكنني اصطدمت بحجر عثرة فوري؛عندما أقوم بتصغير برامج JS النصية الخاصة بي ودمجها في ملف واحد (باستخدام تعريف المهمة أدناه)، فإن ملفي المدمج يحتوي دائمًا على نسختين مصغرتين من كل برنامج نصي.

لقد قمت بقطع جميع مهام msbuild المعقدة الأخرى التي أضفتها، وأزلت جميع برامج JS النصية باستثناء واحد، ولا يزال هذا يحدث.العلامات أدناه هي الجزء الوحيد من ملف مشروعي الذي قمت بتعديله يدويًا:

<UsingTask TaskName="AjaxMin" AssemblyFile="$(MSBuildProjectDirectory)\..\_Build\AjaxMinTask.dll" />
<Target Name="AfterBuild">
    <ItemGroup>
        <JsFiles Include="**\res\js\libs\jquery.js" />
    </ItemGroup>
    <AjaxMin Switches="-global:jQuery,$" JsSourceFiles="@(JsFiles)" JsCombinedFileName="Combined.min.js" />
</Target>

تم إنشاء Combined.min.js في جذر مشروع الويب الخاص بي (كما هو متوقع)، ولكنه يحتوي على نسختين مصغرتين من ملف jquery.js.

أنا أستخدم Microsoft Visual Studio Ultimate 2012 RC (الإصدار 11.0.50706.0 QRELRC يوليو 2012) وملف المراجع "AjaxMinTask.dll" هو الإصدار الأحدث (4.59.4576.13505) من هنا.

والآن، إليك أغرب شيء.بالإضافة إلى ذلك، قمت بإنشاء مشاريع MVC3 جديدة تمامًا في كل من VS 2010 وVS 2012، وقمت بنسخ ولصق الأسطر أعلاه في ملفات المشروع الخاصة بهم - فقط قمت بتغيير المسار إلى AjaxMinTask.dll (لاستخدام نفس المشروع المعطل) والمسار المسار إلى ملف JQuery (\scripts\jquery..js)، و إنهم يعملون بشكل جيد تمامًا.

لسوء الحظ، لا يمكنني لصق ملف المشروع لأنه طويل جدًا بحيث لا يسمح بتجاوز سعة المكدس، لذا قمت بضغطه باستخدام ملف jquery الأصلي الذي أحاول تصغيره/دمجه، والملف "المصغر" الناتج، وتجميعات AjaxMin التي قمت بإنشائها 'تأمل:

[ تم تنقيح عنوان URL ]

وبدلاً من ذلك، أنا منفتح جدًا على أي طرق أخرى مقترحة تسمح لي بالتصغير/الدمج عندما أقوم بالإنشاء في وضع الإصدار في Visual Studio 2012، باستخدام .Net 4.0 وMVC 3.

هل كانت مفيدة؟

المحلول

حسنًا، إليك معضلة غريبة..لقد تمكنت من إصلاح هذا (بعد أيام من التفكير!) إما عن طريق تغيير دليل "js" إلى اسم آخر ("javascript"):

<JsFiles Include="**\res\javascript\libs\jquery.js" />

أو إزالة "**\" من بداية المسار:

<JsFiles Include="res\js\libs\jquery.js" />

أظن أن هذا خطأ من نوع ما.

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