2012-10-02 18 views
13

जब मैं अपने समाधान में एक नई टाइपस्क्रिप्ट फ़ाइल जोड़ता हूं, तो सिस्टम मुझे अच्छी तरह से नीचे (jfs फ़ाइल) के साथ एक (prefilled) .ts फ़ाइल देता है। यह कॉन्फ़िगरेशन मुझे लगता है कि टाइपस्क्रिप्ट से जावास्क्रिप्ट में रूपांतरण स्वचालित है। इस धारणा को इस तथ्य से मजबूत किया गया है कि .ts फ़ाइल में बिल्ड एक्शन 'टाइपस्क्रिप्ट कॉम्पाइल' है। हालांकि, मैं जो करता हूं उसके बावजूद (एक परिवर्तित टीएस सहेजें, परियोजना संकलित करें ...), वास्तव में कुछ भी नहीं होता है।टाइपस्क्रिप्ट कॉम्पाइल बिल्ड एक्शन कुछ भी प्रतीत नहीं होता है

मुझे पता है कि मैं प्रोजेक्ट में प्रीबिल्ड कदम जोड़ सकता हूं लेकिन मुझे वास्तव में टाइपस्क्रिप्ट कॉम्पाइल बिल्ड एक्शन को स्वचालित रूप से लात मारना होगा ताकि मुझे पुन: उत्पन्न करने के लिए .js फ़ाइल के लिए फ़ाइल को सहेजने की आवश्यकता हो। अपेक्षित/वांछित के रूप में काम करने से 'टाइपस्क्रिप्ट कॉम्पाइल' बनाने के लिए मुझे क्या करने की ज़रूरत है?

+0

क्या निर्माण घटना y कहां वर्तमान में है? – Fenton

+0

मेरे पास जावास्क्रिप्ट में मेरे स्रोतों को स्वतः संकलित करने का एक ही मुद्दा था। मैंने एक छोटा ऐप लिखा जो आपके लिए इसका ख्याल रखता है: http://onthefly.codeplex.com/ - जब भी आप संकलन करना चाहते हैं तो बस एक बटन क्लिक करें और यह हो गया है। – Arrow

उत्तर

9

एमवीसी 4 प्रोजेक्ट में टाइपस्क्रिप्ट का उपयोग करने का प्रयास करते समय मुझे एक ही समस्या थी, लेकिन समस्या का समाधान!

अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके निम्नलिखित प्रोजेक्ट फ़ाइल में अपनी लाइनें डालें। प्रोजेक्ट फ़ाइल के अंत में आमतौर पर पहले से ही BeforeBuild अनुभाग पर टिप्पणी की गई है, जिसे आप इन पंक्तियों से प्रतिस्थापित कर सकते हैं। प्रोजेक्ट को दोबारा लोड करें और आप जाने के लिए अच्छे हैं। संकलन के दौरान .js फ़ाइलें अब उत्पन्न की जाएंगी।

<Target Name="BeforeBuild"> 
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

यह अलग हो सकता है (उदाहरण के लिए आप टाइपप्रति एसडीके के एक अलग संस्करण है तो) हालांकि सटीक पथ अच्छी तरह से देखने की,।

<Target Name="BeforeBuild"> 
    <Exec Command="&quot;tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

अंत में, के रूप में टिप्पणी में बताया गया है, आप चाहते हो सकता है -c जोड़ने के लिए कमांड लाइन करने के लिए टिप्पणियों को सुरक्षित रखने के लिए: इसी प्रकार, यदि tsc.exe अपने PATH वातावरण चर में पहले से ही है, तो आप एक संस्करण-अज्ञेयवाद आदेश का उपयोग कर सकते हैं । यह संदर्भों को पुनर्प्राप्त करने और सही क्रम में चीजों को प्रस्तुत करने के लिए एएसपीनेट के संसाधन बंडल जैसे कैसेट & जैसे टूल की अनुमति देता है।

+2

आप कमांड लाइन पर टिप्पणियों को संरक्षित करने के लिए शायद -c जोड़ना चाहते हैं। यह संदर्भों को पुनर्प्राप्त करने और सही क्रम में चीजों को प्रस्तुत करने के लिए कैसेट और एएसपीनेट के संसाधन बंडल जैसे टूल्स की अनुमति देता है – eoleary

+0

मैं इसे काम पर नहीं ला सकता, टाइपस्क्रिप्ट कॉम्पाइल क्या है, क्या यह फ़ाइल नाम होना चाहिए? (टीएससी सहायता पढ़ना), मैं इसे काम करने के लिए एकमात्र तरीका यह है कि अगर मैं अपना ऐप.एस फ़ाइल नाम स्पष्ट रूप से – joeriks

+0

जोड़ता हूं, तो प्रश्न शीर्षक से, लगता है कि TypeScriptCompile एक बिल्ड एक्शन है। –

1

कुछ लोगों के पास यह समस्या है, जिसमें स्वयं भी शामिल है। फिक्स manually install the typescript visual studio extension है।

संस्थापक यहाँ है:

"C: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट SDKs \ टाइपप्रति \ 0.8.0.0 \ TypeScriptLanguageService.vsix"

या यहां 86 मशीनों पर :

"C: \ Program Files \ माइक्रोसॉफ्ट SDKs \ टाइपप्रति \ 0.8.0.0 \ TypeScriptLanguageService.vsix"

0

ठीक है, मैंने बनाम फ़ाइल सहित सब कुछ पुनर्स्थापित कर दिया है। जाहिर है जब मैं अब अपनी परियोजना "चलाता हूं", .ts फ़ाइल स्वचालित रूप से .js फ़ाइल में परिवर्तित हो जाती है (कस्टम बिल्ड क्रियाओं के बिना)। यह अभी ठीक है। यह बेहतर होगा अगर ये फ़ाइलें अन्य कोड जनरेटर का पालन करती हैं जिसमें वे फ़ाइल फ़ाइल सहेजते समय संकलित करते हैं। मैं इसके लिए अपना खुद का सिंगलफाइल जेनरेटर कार्यान्वयन लिखूंगा लेकिन मुझे अभी तक पता नहीं है कि सी # से .js को कैसे कॉल करें।

+0

लेकिन यह वही नहीं है जो आप चाहते थे -> आपने शिकायत की है कि "जब मैं संकलन करने के लिए बिल्ड एक्शन सेट करता हूं, और एक बिल्ड करता हूं, तो यह संकलित नहीं होता है" .. फिर आप इसे ठीक कर देते हैं, तो अब आप कह रहे हैं कि आप इसे कब बनाते हैं संकलित हो जाता है, लेकिन अब आप शिकायत कर रहे हैं कि "जब मैं फ़ाइल को सहेजता हूं तो इसे संकलित नहीं किया जाता है" .. हाँ, क्योंकि यह "बिल्ड" है जो संकलन का कारण बनता है, "सहेजें" नहीं? –

1

यदि आपको अभी भी compiling typescript files समस्याएं हैं, तो हो सकता है कि आप अभी एक ऐप खोलना चाहें। आप फ़ाइलों के केवल 1 क्लिक के साथ फ़ाइलों को संकलित कर सकते हैं।

+0

इसके लिए धन्यवाद, मैंने इसे फिर से निर्देशिकाओं को संसाधित करने के लिए समायोजित किया और अगली शुरू करने से पहले tsc.exe प्रक्रिया को पूरा करने की प्रतीक्षा की। – Jesse

0

यदि आप नवीनतम टाइपस्क्रिप्ट 1.5 के साथ विजुअल स्टूडियो 2013 का उपयोग करते हैं, तो आपको TypeScript tools for Visual Studio इंस्टॉल करने की आवश्यकता हो सकती है।मैंने Web Essentials इंस्टॉल करने के लिए भी पुनः संयोजित किया है जो सहेजने पर .ts स्क्रिप्ट फ़ाइल संकलन (कई अन्य उपयोगी सुविधाओं के अलावा) को आमंत्रित करेगा।

फिर विज़ुअल स्टूडियो .csproj फ़ाइल में नई वेब प्रोजेक्ट के लिए चरणों का पालन करें। Project/PropertyGroup तत्व

तहत

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" /> 

2) आयात MSBuild टाइपप्रति निर्माण लक्ष्य

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

3) कॉन्फ़िगर लक्ष्य टाइपप्रति संस्करण:

1) आयात MSBuild टाइपप्रति Project तत्व जड़ के अंतर्गत निम्नलिखित तत्व जोड़कर गुण

<TypeScriptToolsVersion>1.5</TypeScriptToolsVersion> 
संबंधित मुद्दे