2012-10-08 46 views
10

與Typescript一起執行的TFS Visual Studio項目可能存在問題。TypeScript和TFS的問題

構建tsc無法覆蓋只讀.js文件並拋出權限被拒絕錯誤。

Error 1 Permission denied 
Error 2 The command ""C:\Program Files (x86)\Microsoft SDKs\TypeScript\0.8.0.0\tsc 
"c:\users\schlicht\documents\visual studio 2012\Projects\TypeScriptHTMLApp1\TypeScriptHTMLApp1\app.ts"" exited with code 1. 

是否有可能沒有明確檢查出的文件使用一個構建 TSC?

+1

僅供參考最新版本的Visual Studio 2013 with update 3已修復此問題。我有一個項目,其中.js文件位於TFS源代碼管理下,嵌套在.ts文件下。如果保存.ts文件(導致編譯),則會自動檢出並更新.js文件。 – Quango

回答

1

這是一個已知的bug(或缺少的功能):

http://typescript.codeplex.com/workitem/108

+0

謝謝,我已經想到了一些東西。使用Web Essentials 2012提供了在Visual Studio中保存時自動編譯TypeScript文件(.ts)的可能性。它也有預覽功能。 [鏈接] http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6 – iSchlicht

+0

Web Essentials 2012遭受同樣的問題.... –

7

不檢查的.js文件。我們在TypeScript項目中使用這種方法,並且效果很好。在源代碼控制中不需要生成.js。將.js文件視爲項目輸出,如.exe或.dll。

+4

與此問題是,.js文件然後沒有在生產站點生成生成... –

0

我是experienced這個昨天。

正如iano所述,不要將生成的.js添加到TFS;或將tf checkouttf checkin添加到BeforeBuild目標中。

1

下面是一個解決方法:將JS文件保存爲項目和源代碼管理的一部分。

使用本地工作區,因爲這不適用於文件的只讀標誌,因此保存.JS文件不需要簽出它將被寫入。

我發現這個是因爲我沒有展示這個問題,但是我的團隊中的其他人都是這樣,所以經過一番挖掘,我發現了什麼是不同的。我使用的是本地工作區而不是服務器工作區。

其他團隊成員已轉換爲本地工作區,他們再次順利航行。

0

在回覆提示從項目中排除.js文件的人時,我不得不說這隻能在小型和單一的解決方案軟件中使用。在一個大型軟件應用程序中,即ERP中,每個模塊通常存在多個解決方案,當每個模塊都有自己的.js文件時,通常通過使它們成爲「嵌入式資源」和某些自定義來提供.js和其他類型的源文件虛擬路徑提供者或其他。

那麼,什麼工作? This solution可能會幫助你,我建議你試試看。

但是無論如何,正如A. M.提到的那樣。這是一個已知的錯誤。我認爲TypeScript編譯器的最佳解決方案是跳過爲那些自己只讀(簽入)的.ts文件編寫.js文件。

4

現在, 如果您的構建服務器配置爲Typescript運行,TSC將運行並生成JavaScript文件。

這是另一種替代解決方案,以防您不想刪除JS文件。因爲,如果您暫時刪除JS,並且任何其他開發人員再次將這些文件檢入到TFS中,則會發生相同的錯誤。(更多的是那些隱藏的文件,所以如果你沒有仔細檢查,他們可以在TFS中籤入)

在這種情況下,您可以運行Pre-Build事件,它將刪除所有讀取 - 該項目的JS文件的唯一屬性。

1.右鍵項目點擊和打開項目屬性窗口

2.選擇構建事件標籤

enter image description here

這將確保,所有JS文件釋放只讀屬性,寫入文件失敗時不會有任何錯誤。

希望這會有所幫助。

來源:http://dailydotnettips.com/2014/05/03/typescript-emit-error-write-to-file-failed-how-to-resolve

+1

我添加了'attrib -r/s「$(ProjectDir)* .js.map」'也 –