Typescript: خيار Visual Studio "بدون ترجمة"

تم إنشاؤها على ١١ مارس ٢٠١٥  ·  29تعليقات  ·  مصدر: microsoft/TypeScript

مرحبا،

لقد طورنا مؤخرًا تحسينًا للمكون الإضافي grunt-ts الذي يسمح باستهداف ملف مشروع Visual Studio لمسارات ملف TS للإدخال ومعلومات تكوين TS بدلاً من الاضطرار إلى استخدام src: والخيارات الأخرى. https://github.com/TypeStrong/grunt-ts/pull/215

يتيح Grunt-ts جنبًا إلى جنب مع Task Runner Explorer للمطورين استخدام الميزات التي لم يتم دعمها حتى الآن بواسطة واجهة مستخدم تكوين مشروع Visual Studio TypeScript (مثل saveConstEnums).

شيء واحد حول استخدام Task Runner Explorer هو أنه يمكن ربطه فقط بأحداث Visual Studio معينة. من بينها "بعد البناء" و "قبل البناء". بعد الإنشاء يعمل بشكل رائع ، لكن لديه مشكلة غريبة تتمثل في قيام VS بخطوة التجميع الخاصة به من TypeScript متبوعة باستدعاء grunt-ts tsc. لا يبدو أن هذه مشكلة باستثناء الأداء (العمل الذي تقوم به VS للتجميع والإصدار هو جهد ضائع ويجب على المطور الانتظار لفترة أطول للحصول على النتيجة المرجوة).

أتساءل ما هي الطريقة الأفضل بالنسبة لنا لإيقاف تشغيل التجميع / الإرسال في Visual Studio لـ TypeScript ، ولكن مع الاحتفاظ بكل شيء آخر كما هو (تمييز خدمة اللغة / بناء الجملة ، قائمة الأخطاء ، C # أو بناء VB ، إلخ). هل هذا ممكن حتى الآن؟ إذا لم يكن كذلك ، هل يمكن أن يكون؟

شكر!

Question

التعليق الأكثر فائدة

فقط لمعلوماتك ، في VS2015 RTM هناك طريقة أسهل لتعطيل TypeScriptCompile:
فقط أضف <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> إلى .csproj ، على سبيل المثال في أول <PropertyGroup> .

ال 29 كومينتر

مرحبًا ، قبل أيام قليلة فقط قدمت الإصدار رقم 2252 المرتبط إلى حد ما بهذا. أحتاج إلى طريقة ما لتشغيل أحداث ما قبل الإنشاء وبعده عند استخدام الترجمة عند الحفظ لمشروع TS الذي يحتوي على إخراج ملف واحد (مع الاستمرار في الحفاظ على أوامر VS "Build" و "Rebuild" المعتادة وخدمة اللغة وتصحيح الأخطاء وما إلى ذلك .). كحل بديل ، أستخدم حاليًا Task Runner Explorer مع grunt-Contrib-watch (تم إطلاقه باستخدام رابط "Solution Open") لمشاهدة الملف المترجم لإجراء تغييرات وتنفيذ إجراءات إضافية في كل مرة يتم تعديله.

ومع ذلك ، لا أجد ذلك مُرضيًا حقًا (أحتاج أيضًا إلى تنفيذ بعض إجراءات التجميع المسبق وأفضل عمومًا تنفيذ خطوات البناء إما باستخدام Grunt أو الكل باستخدام VS) وفكر في القيام بما هو موصوف بالضبط: إيقاف تشغيل تجميع VS تمامًا وتنفيذ عمليات تجميع مخصصة عند الحفظ وبنيات كاملة (تتضمن تشغيل اختبارات الوحدة وما إلى ذلك) ، وأحداث ما قبل الإنشاء وبعده مع مزيج من grunt-Contrib-watch و grunt-ts و grunt plugins و Task Runner Explorer .

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

يبدو أن الطريقة الأسهل (والأقل مشاركة لمطوري البرنامج المساعد TS) للسماح بكفاءة بمثل هذه الأنواع من سيناريوهات البناء هي توفير خيار لإيقاف أي شكل من أشكال التجميع بدأه Visual Studio. سأقدر أيضًا أي أفكار حول كيفية القيام بذلك؟

لا أعرف ما إذا كان هناك خيار رائع لك الآن. إذا قمت بتعيين كل ملف .ts في المشروع بحيث يحتوي على Build Action: None في خصائصه ، فمن المحتمل أن يفعل ما تريد ، ولكن من الصعب جدًا القيام به يدويًا حتى في المشاريع متوسطة الحجم.

البناء مشتق من الأهداف في مشاريع MSBuild. إذا كنت ترغب في تعطيل بنية الكتابة الافتراضية ، فقم بإزالة المرجع إلى أهداف الكتابة المطبوعة من ملفك.

سيؤدي هذا إلى جعل خدمة اللغة الخاصة بك لا تجمع كل الملفات في المشروع في سياق واحد. أود أن أقول إن هذا جيد ، ومن خلال الإصدار التالي ، يجب أن نحصل على دعم tsconfig ومن ثم يصبح هذا مشروعك الجديد. إذا كنت لا تزال ترغب في جعله يعمل بدون استخدام tsconfig ، و / أو انتظار الإصدار التالي ، فقم بتحديد خاصية <TypeScriptEnabled>true</TypeScriptEnabled> في ملف مشروعك.

mhegazy هل تقصد <TypeScriptEnabled>false</TypeScriptEnabled> ؟

اعتمادًا جيدًا على ما تريد :)

إذا كنت ترغب في إيقاف تشغيل تحميل محتوى مشروع خدمة اللغة ، فاجعله خطأ ،
إذا كنت تريد تمكينه ، فاجعله صحيحًا. تم تمكينه بالفعل عن طريق تضمين الأهداف الافتراضية (Microsoft.TypeScript.targets)

حسنًا ، سأتلاعب به. شكر!

شكرًا mhegazy ، يبدو أن خيار التكوين يعمل حتى الآن! (مع الاستمرار في عرض أخطاء في بناء الجملة / التوافق والسماح بتصحيح الأخطاء في IE) ويمكن حتى تعيينه لتكوين حل معين (حاولت وبدا أنه يعمل) ، مثل هذا:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
...
    <TypeScriptEnabled>false</TypeScriptEnabled>
...
</PropertyGroup>

لست متأكدًا تمامًا مما يعنيه "تعطيل تحميل محتوى مشروع خدمة اللغة"؟ (لست على دراية بمفاهيم VS مثل الأهداف والسياقات وما إلى ذلك). بقدر ما اختبرت ، يبدو أن كل شيء يعمل بشكل طبيعي مع هذا الخيار (بصرف النظر عن السلوك المتوقع لعدم التجميع عند الإنشاء)؟ ويبدو أنه سيظل يضيف إدخالات <TypeScriptCompile Include=".."/> لملفات .ts المضافة / المنشأة حديثًا في تكوين المشروع.

في ملاحظة جانبية ، الآن مع كل شيء يتم إجراؤه من خلال Grunt ، علي بطريقة ما أن أجد طريقة للتعامل مع التصادمات بين الإنشاءات التي تم تشغيلها من قبل grunt-watch وأحداث "Before Build" / "After Build" عند استدعاء VS Build الأوامر Rebuild ، حيث يقوم VS بالحفظ تلقائيًا قبل بدء الإنشاء ، مما يؤدي إلى تشغيل مثيلتين مختلفتين من Grunt بالتوازي دون داع.

لم أتمكن من الحصول على <TypeScriptEnabled>false</TypeScriptEnabled> للعمل (VS 2013 Update 4 مع TypeScript 1.4) ، ولكن إزالة ملف أهداف TypeScript من المشروع أدى إلى تعطيل التجميع في Project Build.

فيما يلي الخطوات الكاملة المطلوبة لتعطيل تجميع TypeScript في VS (على الرغم من استمرار عمل خدمات اللغة ، حافظ على إعادة البناء سعيدة ، وما إلى ذلك):

  • قم بإزالة المرجع إلى ملف TypeScript ".targets" من ملف المشروع.
  • قم بتعطيل "ترجمة ملفات TypeScript التي ليست جزءًا من مشروع تلقائيًا" في خيارات Visual Studio TypeScript.

الخطوة الثانية هي نوع من الخلل (أو على الأقل لم يتم تسمية مربع الحوار بطريقة دقيقة للغاية) ؛ على الرغم من أن ملفات TypeScript "جزء" من المشروع ، إذا قمت بتعطيل ملف الأهداف ، فسوف يتعامل Visual Studio 2013 معها كما لو كانت _ ليست جزءًا من مشروع وتقوم بالتجميع عند الحفظ (إذا لم يتم تعيين الخيار العام). لم أستطع الحصول على <TypeScriptEnabled/> لفعل أي شيء.

شكرًا mhegazy - سيكون من الرائع أن يكون هذا جزءًا من مربع حوار خيارات TypeScript ، ولكن على الأقل من السهل دعمه عبر تعديل المشروع.

هناك شيء صعب ، وهو أن يكون <TypeScriptEnabled>false</TypeScriptEnabled> في نهاية ملفك تحديدًا بعد الاستيراد إلى الأهداف. كما تحدده الأهداف على أي حال ، وتريد تجاوزها.

شيء واحد صعب ، هوخاطئة يجب أن يكون في نهاية ملفك تحديدًا بعد الاستيراد إلى الأهداف. كما تحدده الأهداف على أي حال ، وتريد تجاوزها.

أنت محق تمامًا! كانت هذه الحيلة.

أعتقد أن هذا يحل المشكلة. شكرا ياmhegazy .

مرحبًا mhegazy - آسف على المتاعب. هل أنت متأكد من أن <TypeScriptEnabled>false</TypeScriptEnabled> يعمل في VS 2013 مع تثبيت TypeScript 1.4؟ لقد قمت للتو بترقية جهاز الكمبيوتر الحالي الخاص بي من VS 2013 مع TS 1.3 (مباشرة VS 2013 التحديث 4) إلى VS 2013 مع TS 1.4 ، والآن يحاول Visual Studio إنشاء TypeScript مرة أخرى "عند الإنشاء" (بمعنى أن الأخطاء التي تظهر بها "Build" : "أمامهم) ، على الرغم من أن الأسطر الخمسة الأخيرة من مشاريعي على النحو التالي:

  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
  <PropertyGroup>
    <TypeScriptEnabled>false</TypeScriptEnabled>
  </PropertyGroup>
</Project>

كان يعمل بشكل صحيح على هذا الجهاز في وقت سابق اليوم (عندما أغلقت هذه التذكرة) ، ولكن الآن بعد أن وضعت 1.4 هنا ، فإن Build from VS يعطيني أخطاء. لا يزال التعليق على مرجع ملف الأهداف (وإيقاف تشغيل "التحويل البرمجي عند الحفظ" لـ TypeScript ليس في مشروع) يؤدي إلى تعطيله.

لدي 1.4 في المنزل ولم أستطع الحصول على <TypeScriptEnabled>false</TypeScriptEnabled> للعمل هناك - أتساءل عما إذا كان هناك تراجع في خيار البناء هذا؟

لا علاقة لـ <TypeScriptEnabled>false</TypeScriptEnabled> بالبناء. الأمر كله يتعلق بخدمة اللغة التي تتعامل مع ملفاتك كجزء من مشروع أم لا.

إذا كنت لا ترغب في البناء على F5 ، فقم بإزالة الإشارة إلى الأهداف.

كانت هذه إجابة مختصرة ، ها هي النسخة الطويلة:

يستخدم ملف المشروع لشيئين:

  1. بناء ، هذا هو دعم MSBuild العادي الخاص بك ، حيث يستدعي الأهداف المهام ، ويعثر النظام على المدخلات ، ومطابقة الأهداف ، وتنفيذها بالترتيب. لذلك كل ما يفعله هذا هو تجميع جميع عناصر TypeScriptCompile في المشروع ، وتمريرها إلى tsc.exe مع بعض الخيارات.
    بالإضافة إلى ذلك ، يتم اشتقاق صفحات خصائص المشروع من ملف المشروع الخاص بك ، وهي مجرد واجهة مستخدم عبر خصائص MSBuild.
  2. خدمة اللغة ، هذا استكمالك ، مساعدة التوقيع ، الأخطاء في VS ، التجميع عند الحفظ .. إلخ .. نريد أن تعمل هذه الأشياء بنفس الطريقة التي يعمل بها البناء العادي ، لذلك نبحث عن نفس الخصائص التي تحددها للبناء ، ونقود سلوك LS. على سبيل المثال ، إذا تم تعيين هدفك على ES3 في ملف مشروعك ( <TypeScriptTarget>ES3</TypeScriptTarget> ) ، فستمنحك خدمة اللغة الخاصة بك تمايلًا أحمر إذا قمت بتحديد get / set في فصل دراسي.
    يتيح لك هذا استخدام مجموعة واحدة من الخيارات لكل من سلوك وقت الإنشاء والتصميم.
    لكي يعمل هذا ، تخبر الأهداف خدمة اللغة بأنها تعرف عن الكتابة المطبوعة من خلال تعريف خاصية <TypeScriptEnabled>true</TypeScriptEnabled> .

إذا كنت لا تريد أن يعمل البناء في VS ، فما عليك سوى إزالة الأهداف. سيؤدي هذا إلى تعطيل الإنشاء ، ولكنه سيخبر LS أيضًا أن هذا المشروع ليس مشروع TypeScript. وبعد ذلك سوف تعامل جميع الملفات على أنها "ملفات فضفاضة". إذا كان هذا مناسبًا لك ، فلا داعي لمزيد من العمل. إذا كنت ترغب في تغيير ذلك وجعله لا يزال يستخدم الخصائص من ملف المشروع الخاص بك ، وعدم تضمين الملفات الأخرى المفتوحة في مشروعك ، وما إلى ذلك .. ثم أضف <TypeScriptEnabled>true</TypeScriptEnabled> إلى ملفك ، وسيعامله LS وفقًا لذلك .

إذا كنت تريد أن يعمل التصميم في VS ، لكن LS لا يتعامل معه كمشروع ، فقم بتعيين العلامة على false.

شكر. هذه معلومات رائعة ويبدو أن كل شيء يعمل بشكل متوافق مع ما وصفته. إذا قمت بإزالة ملف .targets ، ولكن قمت بتعيين TypeScriptEnabled على القيمة true ، فهل من المتوقع أن تختفي علامة التبويب TypeScript Build من خصائص المشروع؟

  <!--
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
  -->
  <PropertyGroup>
    <TypeScriptEnabled>true</TypeScriptEnabled>
  </PropertyGroup>
</Project>

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

السبب الذي يجعلني أطالب بكل هذا هو أنني كتبت مكتبة npm قبل بضعة أسابيع لقراءة خصائص بناء TypeScript من .csproj و. vbproj (https://www.npmjs.com/package/csproj2ts) والتي أنا الآن مندمج في grunt-ts. عندما يصبح جاهزًا ، ستكون هناك طريقة سهلة "لتشغيل tsc مقابل ملف .csproj" (كما هو مطلوب هنا: https://github.com/Microsoft/TypeScript/issues/1702). أريد أن أكون قادرًا على إخبار الأشخاص بأفضل طريقة لإعداد مشروعهم لاستخدام خدمة لغة VS TypeScript لتجربة الترميز الخاصة بهم ، ولكن استخدام grunt-ts بالكامل للبناء. كنت آمل أنه سيكون من الممكن السماح للأشخاص باستخدام واجهة المستخدم لتكوين خصائص TypeScript في هذا السيناريو ، ولكن ربما لن يكون كذلك.

هل أنت على دراية بطريقة تجعل علامة تبويب TypeScript Build تظهر مع تعطيل ملف TypeScript .targets؟

أيضًا ، يبدو أنه حتى لو فعلت شيئًا كالتالي: <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition=" '$(Configuration)' == 'Debug' " /> ، يجب أن أضبط تهيئة المشروع على Debug ثم أعد التحميل لكي تظهر علامة التبويب TypeScript Build.

آسف ، mhegazy - أعدك أنني لا أتصيد لك !!

هل من المتوقع أن تختفي علامة التبويب TypeScript Build من خصائص المشروع؟

نعم ، صفحات الخصائص متصلة بالأهداف ، لذا فإن إزالتها تزيل واجهة المستخدم ، سيتعين عليك تحرير الملف يدويًا

السبب الذي يجعلني أطالب بكل هذا هو أنني كتبت مكتبة npm قبل بضعة أسابيع لقراءة خصائص بناء TypeScript من .csproj و. vbproj (https://www.npmjs.com/package/csproj2ts) والتي أنا الآن مندمج في grunt-ts.

السيناريو الذي تحاول تحقيقه قابل للتنفيذ ، ولكن سيكون له بعض الجوانب الخشنة ، وستحتاج إلى اختراق بعض الأماكن لجعله يعمل. يضيفpaulvanbrenk حاليًا دعمًا لـ tsconfig في VS ، وهذا يسمح لصفحات خصائص المشروع باستخدام ملف tsconfig إذا كان هناك. نحن نعمل أيضًا على الدمج بشكل أفضل في مشاريع ASP.net 5 ، والتي أعتقد أنها ستفعل كل ما تريد ، أي 1. دعم grubt / bower ، 2. طريقة عرض قائمة على نظام الملفات ، 3. استخدم tsconfig لإدارة خصائص المشروع ، و 4. التفاعل البسيط مع المحررين الآخرين / IDEs. أعتقد أن هذا سيعمل بشكل جيد مع السيناريو الذي تصفه ولن تضطر إلى اختراق طريقك للتغلب عليه. سيأتي هذا في الإصدار التالي على الرغم من ذلك ، لذلك هناك بعض الانتظار :)

أيضًا ، يبدو أنه حتى لو فعلت شيئًا كهذا: ، لا بد لي من ضبط تهيئة المشروع على Debug ثم إعادة التحميل حتى تظهر علامة التبويب TypeScript Build.

يتم تحميل الواردات عند تحميل المشروع. لذلك في هذا الاستيراد تقول أنه تم تحميله فقط في "التهيئة" "تصحيح الأخطاء" ، فإن تغيير التكوين لا يفرض إعادة التحميل.

آسف ، mhegazy - أعدك أنني لا أتصيد لك !!
: D لا تقلق. أحب دائمًا الحصول على التعليقات ، وآمل أن يكون ذلك مفيدًا.

حسنا. حقًا ، شكرًا لك على هذه المعلومات الممتازة والمناقشة الشاملة.

فقط لرميها إلى paulvanbrenk - سيكون من الرائع أن يكون لديك طريقة ما حتى في المستقبل مع tsconfig لتتمكن من تعطيل بناء VisualStudio TypeScript (بمعنى CTRL + SHIFT + B ينشئ C # وما إلى ذلك ، ولكن ليس TypeScript) ويستخدم مترجم TypeScript خارجيًا مع ترك القدرة على تعيين خيارات TypeScript عبر واجهة المستخدم الرسومية. هناك الكثير من الأسباب التي تجعل استخدام أداة ترجمة خارجية مفيدًا للغاية ، وفي الوقت الحالي يبدو الأمر وكأنه مدعوم بالصدفة فقط ومع بعض الحواف الخشنة.

فكرة tsconfig رائعة ، لكنها لا تساعد حقًا في:

  • استخدام نسخة قديمة من TypeScript
  • استخدام إصدارات مختلفة من TypeScript في مشاريع مختلفة على نفس الكمبيوتر
  • استخدام إصدار تجريبي من TypeScript (مثل إصدار fdecampredon الذي يدعم JSX)
  • استخدام أداة بناء مثل grunt-ts التي تعمل على أتمتة إدارة المراجع وتقوم بالأعمال المنزلية الأخرى التي لا تدعمها TypeScript
  • إلخ.

السماح لمستخدمي Visual Studio باختيار نظام مترجم TypeScript مطور من قبل المجتمع مع الحفاظ على واجهة المستخدم الرائعة داخل Visual Studio سيكون أمرًا رائعًا (خاصة مع الوظيفة الإضافية Task Runner Explorer الإضافية). آمل أن تزن الفوائد الكبيرة التي تعود على المجتمع والتي سيمكنها ذلك مقابل الوقت الذي تستغرقه في ترميز مربع اختيار يقول "تعطيل إنشاء TypeScript".

آمل أن تزن الفوائد الكبيرة التي تعود على المجتمع والتي سيمكنها ذلك مقابل الوقت الذي تستغرقه في ترميز مربع اختيار يقول "تعطيل إنشاء TypeScript".

هذا هو الجزء الذي أشعر فيه بالحيرة. بالنسبة لي ، هذا هو إزالة مرجع الأهداف المطبوعة ، ثم استبداله بأهدافك الشاقة التي ستبني الأشياء بشكل مختلف. من الغريب بالنسبة لي تضمين ملف .targets بشرط يخبره بعدم القيام بأي شيء ؛ لماذا أدرجها في المقام الأول؟ سأكون سعيدًا للمساعدة في إنشاء ملف .targets يحل محل أهداف الكتابة القياسية ، وسيشمل هذا العلامة <TypeScriptEnabled>true</TypeScriptEnabled> وسيتطلع إلى VS كما لو كان الملف الافتراضي ، لكنه سيتعامل مع الإنشاء بشكل مختلف.

هاه. كان يجب أن أفكر في ذلك - أعتقد أنني كنت أعامل ملف .targets على أنه شيء غير قابل للتغيير ، لكن بالطبع هذا منطقي تمامًا. سأبحث في تنسيق ملف الأهداف وأعود إليك.

طريقة سهلة للبدء هي نسخ ملف الأهداف Microsoft.TypeScript. الهدف ، إزالة الأشياء التي لا تهتم بها ، مثل استدعاء tsc ، وإضافة مهام لاستدعاء grunt ، و wire في التكوين ، إلخ .. ثم تضمينها في مشروعك.

رائع! لقد حصلت على كل شيء يعمل من منظور الحد الأدنى من خلال تعيين ملف .csproj الخاص بي مع الأسطر الأربعة التالية.

  <Import Project="$(ProjectDir)\custom.TypeScript.targets" />
  <PropertyGroup>
    <TypeScriptEnabled>true</TypeScriptEnabled>
  </PropertyGroup>

وملف custom.TypeScript.targets البسيط هو هذا:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VsToolsPath Condition="'$(VsToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VsToolsPath>
  </PropertyGroup>
  <UsingTask TaskName="TypeScript.Tasks.VsTsc" AssemblyFile="$(VSToolsPath)\TypeScript\TypeScript.tasks.dll" />
  <PropertyGroup>
    <CfgPropertyPagesGuidsAddCSharp>{d4683cae-88c4-4b85-863d-ac8014f3ba36}</CfgPropertyPagesGuidsAddCSharp>
    <CfgPropertyPagesGuidsAddVB>{d4683cae-88c4-4b85-863d-ac8014f3ba36}</CfgPropertyPagesGuidsAddVB>
    <CfgPropertyPagesGuidsAddTypeScript>{d4683cae-88c4-4b85-863d-ac8014f3ba36}</CfgPropertyPagesGuidsAddTypeScript>
  </PropertyGroup>
  <ItemGroup>
    <ProjectCapability Include="TypeScript" />
  </ItemGroup>
</Project>

حاولت وضع علامة <TypeScriptEnabled /> في ملف الأهداف ، لكنها لم تكن تعمل (كان VS يتعامل مع ملفات .ts على أنها فضفاضة). اي فكرة لماذا هذا؟ (أنا متأكد من أن هذا الأمر واضح بالنسبة لشخص يعرف MSBuild - ربما نوعًا ما من مشكلة النطاق؟).

أعتقد أن هذا يحل مشكلتي في هذه المرحلة. يمكنني تشغيل مهمة Grunt الخاصة بي باستخدام ملحق Task Runner Explorer الذي يمكنه بدء مهام Grunt أو Gulp عند تشغيل VS Build. يظهر الآن دائمًا أنه نجح بغض النظر عن نتيجة تجميع TypeScript ، ولكن هذا جيد لأن المستخدم يمكنه رؤية الإخراج من grunt-ts في نافذة TRX. تظهر لوحة "TypeScript Build" في نافذة خصائص المشروع. تجميع عند حفظ الأعمال إذا تم تحديد هذا الخيار. لا يزال البناء يظهر على أنه فشل إذا لم يتم ترجمة كود C # أو VB بنجاح (شيء جيد). يعد الإعداد للوصول إلى هنا من Visual Studio الافتراضي "تطبيق HTML مع TypeScript" أو مشروع ويب ASP.NET مباشرًا إلى حد ما.

هل يمكنك أن ترى أي مشكلة في توزيع ملف .targets المبسط أعلاه مع grunt-ts؟ هذا يعني أنه سيتعين علينا فقط إخبار الأشخاص بتحديث سطر .targets الخاص بمشروعهم إلى <Import Project="$(ProjectDir)\node_modules\grunt-ts\custom.TypeScript.targets" /> وتعيين <TypeScriptEnabled> .

شكرا لك مرة أخرى!!

حاولت وضع ملف علامة في ملف الأهداف ، لكنها لم تكن تعمل (كان VS يتعامل مع ملفات .ts على أنها فضفاضة). اي فكرة لماذا هذا؟ (أنا متأكد من أن هذا الأمر واضح بالنسبة لشخص يعرف MSBuild - ربما نوعًا ما من مشكلة النطاق؟).

هذا غريب. هذه هي الطريقة التي نضعها في أهدافنا ، وهي تعمل بشكل جيد. هل تضم أهدافًا أخرى لها ممتلكات؟ اي شروط؟ لقد جربته في مشروع ts جديد ، وأزلت Microsoft.TypeScript.targets ، ووضعت ملفك ، وأضفتصحيح وقد نجح ذلك.

هل يمكنك أن ترى أي مشكلة في توزيع ملف .targets المبسط أعلاه مع grunt-ts؟ هذا يعني أنه سيتعين علينا فقط إخبار الأشخاص بتحديث خط أهداف مشروعهم إلى وحدد.

أعتقد أن هذه هي الطريقة الصحيحة للذهاب. سأحاول فقط الحصول على TypeScriptEnabled هناك أيضًا. اسمحوا لي أن أعرف كيف يمكنني المساعدة في تشخيص المشكلة

بعض الملاحظات ، لا تحتاج إلى مرجع task.dll ولا تعريف VsToolsPath ، إلا إذا كنت في حاجة إليه لشيء آخر.

أرى السلوك الذي توقعته على جهاز الكمبيوتر المنزلي. عملت أيضًا بدون الإشارة إلى DLL. لابد أنني ارتكبت خطأ من قبل ، لذا سأحاول مرة أخرى غدًا. أعتقد أن هذا رائع حقًا! شكرا محمد. يجب أن يتم تحرير هذا كجزء من النخر في الأيام القليلة المقبلة.

الشيء الوحيد الذي قد يتسبب في ذلك هو أن الملفات المستهدفة يتم تحميلها مرة واحدة فقط في VS ، لذلك إذا قمت بتحرير الأهداف ، فلن تنعكس التغييرات في مشروعك حتى تقوم بإعادة تشغيل VS.

كان من الممكن أن يكون ذلك ؛ كنت مجرد تفريغ / إعادة تحميل المشروع. من الممكن أن أعيد تشغيل VS في المنزل. سأقوم بتدوين ذلك في المستندات.

mhegazy شكرا على كل ما تبذلونه من المساعدة. لقد أصدرنا grunt-ts 4.0.0 والذي يحتوي على ميزة "التحويل البرمجي من مشروع Visual Studio":

https://github.com/TypeStrong/grunt-ts#vs

تعليمات لتعطيل بناء VS:

https://github.com/TypeStrong/grunt-ts/blob/master/docs/DisableVisualStudioBuild.md

رائع جدا! أنا أحب السيناريوهات التي تمكن هذا.

شكرا رايان. أنا سعيد إلى حد ما بكيفية ظهور ذلك. عندما يأتي tsconfig ، قد يكون أقل أهمية ، ولكن هذا سوف يسد الفجوة حتى ذلك الحين وبالطبع يكون متوافقًا مع إصدارات مترجم TypeScript قبل 1.5.

ملاحظة: كان هناك تقريران عن الأخطاء اليوم ، لذلك يجب أن ندفع 4.0.1 الليلة بافتراض أنه يمكنني تصحيحهما.

فقط لمعلوماتك ، في VS2015 RTM هناك طريقة أسهل لتعطيل TypeScriptCompile:
فقط أضف <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> إلى .csproj ، على سبيل المثال في أول <PropertyGroup> .

شكر.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات