2012-10-08 11 views
10

Es gibt wahrscheinlich ein Problem mit TFS Visual Studio-Projekt, das zusammen mit Typescript ausgeführt wird.Probleme mit TypeScript und TFS

OnBuild TSC kann die readonly .js-Datei nicht überschreiben und löst einen Berechtigungsfehler aus.

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. 

Ist es möglich, ohne explizit die Dateien auschecken einen Build mit tsc zu benutzen?

+1

FYI die neueste Version von Visual Studio 2013 mit Update 3 wird dieses Problem behoben. Ich habe ein Projekt, in dem die .js-Datei unter TFS-Quellcodeverwaltung ist, verschachtelt unter der .ts-Datei. Wenn Sie die .ts-Datei speichern (was zu einer Kompilierung führt), wird die .js-Datei automatisch ausgecheckt und aktualisiert. – Quango

Antwort

1

Dies ist ein bekannter Fehler (oder fehlende Funktion):

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

+0

Danke, mir ist schon was eingefallen. Die Verwendung von Web Essentials 2012 bietet die Möglichkeit, automatisch eine TypeScript-Datei (.ts) zu kompilieren, wenn diese in Visual Studio gespeichert wird. Es hat auch eine Vorschau-Funktion. [link] http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6 – iSchlicht

+0

Web Essentials 2012 leidet unter dem gleichen Problem .... –

7

überprüfen Sie nicht in der JS-Datei. Wir verwenden diesen Ansatz in unserem TypeScript-Projekt und es funktioniert gut. Die generierten .js müssen nicht in der Quellcodeverwaltung enthalten sein. Stellen Sie sich die .js-Dateien als Projektausgabe vor, z. B. als EXE- oder DLL-Datei.

+4

Das Problem dabei ist, dass die .js-Datei dann tut nicht erzeugt in der Produktionsstelle auf Build ... –

0

I experienced dies gestern.

Wie iano erwähnt, fügen Sie die generierten .js nicht zu TFS hinzu; oder fügen Sie dem BeforeBuild-Ziel tf checkout und tf checkin hinzu.

1

Hier ist ein Workaround: Um Ihre JS-Dateien als Teil des Projekts und in der Quellcodeverwaltung zu halten.

Verwenden Sie einen lokalen Arbeitsbereich, da dies das schreibgeschützte Flag für Dateien nicht anwendet, so dass das Speichern der .JS-Dateien kein Auschecken erfordert, um in es geschrieben zu werden.

Ich fand dies, weil ich dieses Problem nicht ausstellte, aber andere in meinem Team waren, also nach einigem Graben fand ich heraus, was anders war. Ich habe einen lokalen Arbeitsbereich anstelle eines Serverarbeitsbereichs verwendet.

Die anderen Teammitglieder sind in einen lokalen Arbeitsbereich konvertiert und sie segeln wieder reibungslos.

0

Als Antwort auf Leute, die den Ausschluss von .js-Dateien aus dem Projekt vorschlagen, muss ich sagen, dass dies nur in kleiner und einfacher Lösungssoftware funktionieren kann. In einer großen Softwareanwendung, dh einem ERP, gibt es normalerweise mehrere Lösungen pro Modul, und wenn jedes .js-Dateien für sich selbst hat, wird das Liefern von .js und anderen Quelldateien dieser Art normalerweise durch "eingebettete Ressourcen" und einige benutzerdefinierte gemacht virtueller Pfadanbieter oder etwas.

Also, was funktioniert? This solution könnte Ihnen helfen, ich schlage vor, Sie versuchen es.

Aber wie auch immer, wie A. M. erwähnt. Dies ist ein bekannter Fehler. Und ich denke, die beste Lösung für den TypeScript-Compiler wäre das Überspringen von .js-Dateien für diese .ts-Dateien, die selbst schreibgeschützt sind.

4

Jetzt,   Wenn Ihr Build-Server für den Typescript-Lauf konfiguriert ist, wird TSC die JavaScript-Dateien ausführen und generieren.

Hier ist eine andere alternative Lösung, falls Sie die JS-Datei nicht entfernen möchten. Wenn Sie die JS-Datei vorerst entfernen und alle anderen Entwickler diese Datei erneut in TFS einchecken, tritt derselbe Fehler auf.(mehr darüber sind versteckte Dateien. Wenn Sie nicht sorgfältig einchecken, können sie in TFS eingecheckt werden)

In diesem Fall können Sie ein Pre-Build-Ereignis ausführen, das alle gelesenen Objekte entfernt Nur Attribute der JS-Dateien für dieses Projekt.

1. Rechtsklick auf dem Projekt und Öffnen Sie die Projekteigenschaftenfenster

2. Wählen Sie den Build-Ereignis Tab

enter image description here

Dadurch wird sichergestellt, alle Die JS-Datei gibt die schreibgeschützten Attribute frei und es wird kein Fehler für das Schreiben in die Datei auftreten.

Hoffe, das hilft.

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

+1

Ich habe 'attrib -r/s" $ (ProjectDir) *. js.map "' auch hinzugefügt –