Probleme mit Typoskript und TFS

stimmen
10

Es ist wahrscheinlich ein Problem mit TFS Visual Studio-Projekt durchgeführt, zusammen mit Maschinenschrift.

Auf Build kann tsc nicht überschreiben die Nur-Lese-Js ein Zugriff verweigert Fehler wirft Datei.

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 zu verwenden , mit tsc?

Veröffentlicht am 08/10/2012 um 11:30
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
7

Aktivieren Sie nicht in der JS-Datei. Wir nutzen diesen Ansatz auf unserem Typoskript Projekt und es funktioniert gut. Es besteht keine Notwendigkeit, die erzeugten Js in der Quellcodeverwaltung zu haben; man denke an die Js-Dateien, die als Projektausgabe, wie eine EXE- oder DLL.

Beantwortet am 14/10/2012 um 02:59
quelle vom benutzer

stimmen
4

Nun, wenn Ihr Build-Server für den Typoskript Lauf konfiguriert ist, wird TSC ausführen und die JavaScript-Dateien generieren.

Hier ist eine weitere alternative Lösung, falls Sie nicht die JS-Datei entfernen möchten. Denn wenn Sie die JS für Vorerst und andere Entwickler Check in dieser Datei wieder in TFS entfernen, der gleichen Fehler kommen auftreten. (Mehr über diejenigen sind versteckte Dateien, so dass, wenn Sie nicht Check-in sorgfältig, können sie eingecheckt in in TFS sein)

In diesem Fall können Sie ein Pre-Build-Ereignis ausgeführt, die alle für das Projekt schreibgeschützt Attribute der JS-Dateien entfernen.

1. Rechtsklick auf das Projekt und öffnen Sie das Projekt Eigenschaftenfenster

2. Wählen Sie das Build - Ereignis Tab

Geben Sie hier image description

Dadurch wird sichergestellt, alle JS-Datei Release der Read-Only-Attribute und es wird keine Fehler für write fehlgeschlagen Datei.

Hoffe das hilft.

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

Beantwortet am 28/11/2015 um 06:05
quelle vom benutzer

stimmen
1

Hier ist eine Abhilfe: Um Ihre JS-Dateien als Teil des Projektes und in der Quellcodeverwaltung zu halten.

Verwenden Sie einen lokalen Arbeitsbereich, da dies nicht die schreibgeschützt gilt Flagge auf Dateien, so dass das Speichern der Dateien .JS keine Check-out benötigen dafür geschrieben zu werden.

Ich fand dies, weil ich dieses Problem nicht aufweisen, aber andere in meinem Team waren, so nach einiger Graben fand ich heraus, was anders war. Ich war mit einem lokalen Arbeitsbereich anstelle einen Server-Arbeitsbereich.

Die anderen Teammitglieder haben zu einem lokalen Arbeitsbereich umgewandelt und sie sind glatt Segeln noch einmal.

Beantwortet am 18/07/2013 um 11:30
quelle vom benutzer

stimmen
1

Dies ist ein bekannter Fehler (oder fehlende Funktion):

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

Beantwortet am 08/10/2012 um 14:52
quelle vom benutzer

stimmen
0

Problem:
Wenn Sie die generierten hinzufügen * JS - Dateien auf TFS, dann TFS schreib schützt sie, wenn man sie nicht in Anspruch oder überprüfe sie nicht aus. Also , wenn Sie die * .ts - Datei ändern, kann es nicht erzeugen , um die * JS - Datei, da die Datei schreibgeschützt ist.
==> Fehler
Aber wenn man sich in nicht überprüfen, die * .js - Datei fehlt wird, wenn Sie bereitstellen laufen.
==> Kompiliert, aber Laufzeitfehler
Auch, wenn Sie es als eingebettete Ressource benötigen, können Sie die Datei nicht ausschließen ...

Zusätzliches Problem 1:
Wenn Sie „Rebuild Solution“ ausführen, Visual Studio will von Typoskript erzeugen * JS - Dateien zu löschen, bevor es Build ausführt.
Aber das Löschen ist nicht möglich, da die * .js - Dateien sind schreibgeschützt ...
==> Fehler

Zusätzliches Problem 2:
Da nicht sauber „Build“ ist, sind die Pre-Build - Ereignisse nicht sauber ausgeführt ...
Also , wenn Sie den Schreibschutz auf Pre-Build entfernen, wird es funktionieren , wenn Sie „bauen“ zu tun, aber es wenn Sie „Neu erstellen“ wird fehlschlagen, und zwar unabhängig davon , ob Sie es in der Lösung oder in dem Projekt zu tun.

Zusätzliches Problem 3:
Sie können keine Vorreinigung Ereignisbefehl in der Projekt-Einstellungen Editor definieren.

So, hier ist was Sie tun können:
Run attrib -r /s(entfernt den Schreibschutz) auf Ihrem typescripted * JS - Dateien als Pre-Build - Aktion.
z.B

attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"

Dies funktioniert, weil * erweitert wird:

  • Wenn die Datei nicht existiert, gibt es kein Fehler, da kein Befehl ausgeführt wird.
  • Wenn die Datei vorhanden ist, kein Fehler vorhanden ist, wird der Befehl ausgeführt.

Wenn Sie es auf einem Dateinamen laufen würden, wäre es nicht, wenn die Datei nicht existiert.

Nun müssen Sie die Projektdatei (* CSPROJ) von Hand bearbeiten, eine Vorreinigung Aktion hinzuzufügen.
Die Vorreinigung Wirkung ist das gleiche wie die Pre-Build - Aktion.

  <Target Name="BeforeClean">
    <!-- DO YOUR STUFF HERE -->
    <Exec Command="attrib -r /s &quot;$(ProjectDir)Resources/Scripts/0/*.js&quot;" />
  </Target>

Und los geht. Jetzt können Sie die Check * JS-Dateien in, können die * .ts-Datei bearbeiten (Sie müssen die * JS-Datei aufzuheben, oder führen zu bauen danach)

Wenn Sie es auf einer Pro-Datei-Basis ausgeführt werden sollen, ist der Befehl:

if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)

oder in XML-Form:

<Exec Command="if EXIST &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot; (&#xD;&#xA;attrib -r &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot;&#xD;&#xA;)" />

Und statt die der Entfernung von Nur-Lese-Attribut Großhandel in der Pre-Build-Aktion können Sie auch die einzelnen Dateien überprüfen mit dem TFS-Befehlszeilentool:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

By the way, können Sie eine Liste von Visual Studio / MsBuild Makros finden Sie hier:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017

Und um den tatsächlichen Wert des Makros herauszufinden:

  • Rechtsklick auf das Projekt im Solution Explorer, wählen Sie Eigenschaften
  • wählen Sie die Build - Events Registerkarte
  • klicken Sie auf das Bearbeiten Präbuildereignis oder bearbeiten Post-Build - Taste, entweder ist in Ordnung
  • in dem Fenster , das sich öffnet, klicken Sie auf die Makros Schaltfläche
  • scrollen Sie die Liste nach unten , bis Sie finden ProjectDir, in der nächsten Scheibe seinen Istwert

Auch statt dem Pre-Build-Event im Projekt verwenden, können Sie die Kasse als Before-Ziel-Befehl hinzufügen. Auf diese Weise kann niemand es versehentlich entfernen, wenn sie etwas in Pre-Build-in-Projekt-Einstellungen setzen.

  <Target Name="BeforeBuild">
    <Exec Command="&quot;$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe&quot; checkout /lock:none &quot;$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js&quot;" />
  </Target>
Beantwortet am 06/02/2019 um 13:09
quelle vom benutzer

stimmen
0

In ihrer Antwort auf den Menschen darauf hindeutet, Ausschluß von Js Dateien aus dem Projekt, muß ich sagen, dass dies nur in kleiner und einzigen Lösung Software arbeiten kann. In einem großen Software-Anwendung, dh eine ERP, gibt es in der Regel mehrere Lösungen pro Modul, und wenn jeder Js-Dateien für sich selbst haben, liefern Js und anderen Quelldateien dieser Art ist in der Regel, indem sie „Embedded Ressourcen“ und einige nach Maß virtueller Pfad Anbieter oder so etwas.

Also, was funktioniert? Diese Lösung könnte helfen, schlage ich vor , Sie versuchen es.

Aber egal, wie AM erwähnt. Dies ist ein bekannter Fehler. Und ich denke, die beste Lösung für Typoskript Compiler wäre zu schreiben Js-Dateien für die .ts Dateien zu überspringen, die schreibgeschützt sind (eingecheckt) selbst.

Beantwortet am 06/07/2015 um 06:14
quelle vom benutzer

stimmen
0

Ich erlebte dies gestern.

Wie iano erklärte nicht die generierten Js zu TFS hinzuzufügen; oder fügen tf checkoutund tf checkinmit dem Ziel Before.

Beantwortet am 20/11/2012 um 13:43
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more