Problemi con dattiloscritto e TFS

voti
10

C'è probabilmente un problema con TFS progetto di Visual Studio condotto insieme a Carattere tipografico.

Sulla costruzione TSC non può sovrascrivere il file .js di sola lettura di un errore di tiri Autorizzazione negata.

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. 

E 'possibile , senza esplicitamente la ricezione dei files da utilizzare una build con TSC?

È pubblicato 08/10/2012 alle 11:30
fonte dall'utente
In altre lingue...                            


7 risposte

voti
7

Non archiviare il file .js. Usiamo questo approccio sul nostro progetto tipografico e funziona bene. Non c'è bisogno di avere i .js generati nel controllo del codice sorgente; pensare ai file .js come output del progetto, come un exe o dll.

Risposto il 14/10/2012 a 02:59
fonte dall'utente

voti
4

Ora, se il server di build è configurato per la corsa tipografico, TSC verrà eseguito e generare i file JavaScript.

Ecco un'altra soluzione alternativa, nel caso in cui non si desidera rimuovere il file JS. Perché, se si rimuove il JS per momento, e tutte le altre verifiche sviluppatore in quelle file di nuovo in TFS, lo stesso errore verrà verificarsi. (Di più rispetto a quelli sono file nascosti, quindi se non si check-in con cura, possono essere controllati nella TFS)

In questo caso, è possibile eseguire un evento pre-generazione, in grado di rimuovere tutti gli attributi di sola lettura dei file JS per quel progetto.

1. Fare clic destro sul progetto e aprire la finestra delle proprietà del progetto

2. Selezionare il Genera evento Tab

entrare descrizione dell'immagine qui

Ciò garantirà, tutto il rilascio di file JS il attributi di sola lettura e non ci sarà alcun errore per la scrittura di file non è riuscito.

Spero che questo ti aiuti.

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

Risposto il 28/11/2015 a 06:05
fonte dall'utente

voti
1

Ecco una soluzione alternativa: Per mantenere i file JS come parte del progetto e nel controllo del codice sorgente.

Utilizzare uno spazio di lavoro locale, in quanto questo non si applica la sola lettura bandiera su file, in modo da salvare i file .JS non richiedono un check-out per essere scritto.

Ho trovato questo perché non stava esibendo questo problema, ma altri nella mia squadra, così dopo qualche scavo ho scoperto cosa era diversa. Io sto usando un lavoro locale, invece di uno spazio di lavoro Server.

Gli altri membri del team hanno convertito in un lavoro locale e sono una navigazione tranquilla, ancora una volta.

Risposto il 18/07/2013 a 11:30
fonte dall'utente

voti
1

Si tratta di un bug noto (funzione o mancante):

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

Risposto il 08/10/2012 a 14:52
fonte dall'utente

voti
0

Problema:
Se si aggiungono i file generati * .js a TFS, poi TFS scriverle-protegge, se si controlla loro, o non Dateci un'occhiata. Quindi, se si modifica il file * .ts, non può generare il file .js, perché il file è protetto da scrittura.
==> Error
Ma se non si seleziona loro, il * .js file sarà mancare se si esegue distribuire.
==> errore compila, ma Runtime
Inoltre, se ne avete bisogno come risorsa incorporata, non è possibile escludere il file ...

Ulteriore problema 1:
Se si esegue "Rigenera soluzione", Visual Studio vuole cancellare il file * .js generati da dattiloscritto, prima di eseguire build.
Ma la cancellazione non è possibile, in quanto i file * .js sono protetti da scrittura ...
==> Error

Ulteriore problema 2:
Dal momento che non è pulito "Build", la pre-compilazione eventi non vengono eseguiti sul pulito ...
Quindi, se si rimuove la protezione da scrittura sulla pre-build, funzionerà se non "costruire", ma avrà esito negativo se si sceglie "Rebuild", indipendentemente dal fatto che lo si fa nella soluzione o nel progetto.

Ulteriore problema 3:
Non è possibile definire un comando evento di pre-pulita in l'editor di progetto-settings.

Quindi, ecco cosa si può fare:
Run attrib -r /s(rimuove la protezione da scrittura) sul tuo typescripted * .js file come azione di pre-compilazione.
per esempio

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

Questo funziona, perché * si espande:

  • Se il file non esiste, non c'è nessun errore, perché viene eseguito nessun comando.
  • Se il file non esiste, non c'è nessun errore, viene eseguito il comando.

Se desideri esegue su un nome di file, sarebbe errore se il file non esiste.

Ora, è necessario modificare il file di progetto (* .csproj) a mano, aggiungere un'azione di pre-pulito.
L'azione di pre-pulita è la stessa come l'azione pre-compilazione.

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

E ci si va. Ora è possibile controllare i file .js in, in grado di modificare il file * .ts (è necessario rimuovere la protezione del file .js, o eseguire accumulo in seguito)

Se si desidera eseguire su una base per file, il comando è:

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

o in XML-forma:

<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;)" />

E invece di rimuovere l'attributo di sola lettura ingrosso nell'azione pre-build, è anche possibile controllare i singoli file con lo strumento TFS riga di comando:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

Tra l'altro, è possibile trovare un elenco di macro VisualStudio / MSBuild qui:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017

E per scoprire il valore reale della macro:

  • fate clic destro sul progetto in Solution Explorer, selezionare Proprietà
  • selezionare l'Eventi di compilazione scheda
  • fare clic sul Modifica pre-compilazione o Modifica post-generazione tasto, o va bene
  • nella finestra che si apre, fare clic sul Macro tasto
  • scorrere l'elenco fino a trovare ProjectDir, nel riquadro successivo è il suo valore reale

Inoltre, invece di usare l'evento pre-compilazione nel progetto, è possibile aggiungere alla cassa come comando di BeforeBuild-bersaglio. In questo modo nessuno può accidentalmente rimuoverlo se hanno messo qualcosa nel pre-compilazione nel progetto-settings.

  <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>
Risposto il 06/02/2019 a 13:09
fonte dall'utente

voti
0

In risposta alle persone che suggeriscono l'esclusione di file .js dal progetto, devo dire che questo può funzionare solo in piccola e singola soluzione software. In una grande applicazione software cioè un ERP, esiste di solito soluzioni multiple per modulo, e quando hanno ciascuno file .js per se stessi, js consegna e altri file di origine di questo tipo è di solito fatta da rendendoli "risorse incorporate" e un po 'personalizzato provider di percorso virtuale o qualcosa del genere.

Quindi, ciò che funziona? Questa soluzione potrebbe aiutare, vi consiglio di provarlo.

Ma comunque, come AM menzionato. Questo è un bug conosciuto. E credo che la soluzione migliore per il compilatore dattiloscritto sarebbe quello di ignorare i file di scrittura js per quei file .ts che sono di sola lettura (check-in) se stessi.

Risposto il 06/07/2015 a 06:14
fonte dall'utente

voti
0

Ho sperimentato questo ieri.

Come ha affermato iano, non aggiungere i .js generati a TFS; o aggiungere tf checkoute tf checkinal bersaglio BeforeBuild.

Risposto il 20/11/2012 a 13:43
fonte dall'utente

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