Problemen met typoscript en TFS

stemmen
10

Er is waarschijnlijk een probleem met TFS Visual Studio project uitgevoerd samen met Typescript.

Op build kan TSC niet overschrijven van de alleen-lezen .JS een gooit Toestemming geweigerd error.

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. 

Is het mogelijk zonder expliciet het controleren van de bestanden naar een build gebruiken met TSC?

De vraag is gesteld op 08/10/2012 om 11:30
bron van user
In andere talen...                            


7 antwoorden

stemmen
7

Niet controleren in het bestand js. We gebruiken deze aanpak op onze typoscript project en het werkt goed. Er is geen noodzaak om de gegenereerde js in source controle; denk aan de Js-bestanden als project-uitgang, als een .exe of .dll.

antwoordde op 14/10/2012 om 02:59
bron van user

stemmen
4

Nu, als je build-server is geconfigureerd voor het Typescript termijn zal TSC lopen en het genereren van de JavaScript-bestanden.

Hier is nog een alternatieve oplossing, in het geval dat u niet wilt dat de JS-bestand te verwijderen. Want als je de JS verwijderen voor het moment, en alle andere ontwikkelaar check in die bestand opnieuw in TFS, zal dezelfde fout te komen optreden. (Meer dan dat zijn verborgen bestanden, dus als je niet inchecken voorzichtig, kunnen ze ingecheckt in TFS zijn)

In dit geval kunt u een Pre-Build evenement, dat zal verwijderen alle read-only attributen van de JS-bestanden voor dat project uit te voeren.

1. Klik met de rechtermuisknop op het project en Open het Project Property Window

2. Selecteer de Build Event Tab

voer image beschrijving hier

Dit zal ervoor zorgen, alle JS-bestand de release van de Read-Only attributen en er zal geen fout voor schrijven naar bestand is mislukt zijn.

Ik hoop dat dit helpt.

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

antwoordde op 28/11/2015 om 06:05
bron van user

stemmen
1

Hier is een oplossing: Om uw JS-bestanden in het kader van het project en in de bron controle te houden.

Gebruik een lokaal Workspace, omdat dit niet de alleen-lezen vlag toe te passen op bestanden, zodat het opslaan van de .JS bestanden vereisen geen check-out om te kunnen worden geschreven.

Ik vond dit omdat ik niet dit probleem vertonen, maar anderen in mijn team waren, dus na wat graafwerk kwam ik erachter wat er anders was. Ik was op een lokale Workspace in plaats van een Server Workspace.

De andere teamleden hebben omgezet in een lokale Workspace en ze zijn een leien dakje weer.

antwoordde op 18/07/2013 om 11:30
bron van user

stemmen
1

Dit is een bekende bug (of ontbrekende functie):

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

antwoordde op 08/10/2012 om 14:52
bron van user

stemmen
0

Probleem:
Als u de gegenereerde * .js bestanden toe te voegen aan TFS, dan TFS schrijven-beschermt hen, als je ze in te checken, of ze niet uitchecken. Dus als je de * .TS bestand wijzigt, kan het niet het * .js bestand te genereren, omdat het bestand is beveiligd tegen schrijven.
==> Error
Maar als je ze niet in te checken, zal het * .js bestand afwezig zijn als je loopt te zetten.
==> compileert, maar Runtime fout
ook, als je het nodig hebt als een ingesloten bron, kunt u het bestand niet uit te sluiten ...

Extra probleem 1:
Als je loopt "Rebuild Solution", Visual Studio wil verwijderen de * .js bestanden die door typoscript, voordat het build uitvoert.
Maar verwijderen is niet mogelijk, omdat het * .js bestanden zijn beveiligd tegen schrijven ...
==> Error

Extra probleem 2:
Aangezien schoon is niet "Build", de pre-build evenementen worden niet uitgevoerd op schone ...
Dus als je de write-bescherming op de pre-build te verwijderen, zal het werken als je het "bouwen", maar het mislukt als u kiest voor "Rebuild", ongeacht of je het doet in de oplossing of in het project.

Extra probleem 3:
U kunt een pre-clean commando geval niet te definiëren in de editor project-settings.

Dus, hier is wat u kunt doen:
Run attrib -r /s(verwijdert schrijf beveiliging) op uw typescripted * .js-bestanden als pre-build actie.
bv

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

Dit werkt, omdat * wordt uitgebreid:

  • Als het bestand niet bestaat, er geen fout is, omdat er geen opdracht wordt uitgevoerd.
  • Als het bestand bestaat, er geen fout is, wordt de opdracht uitgevoerd.

Als je het zou draaien op een bestandsnaam, het zou mislukken als het bestand niet bestaat.

Nu, moet u het project bestand (* .csproj) met de hand bewerkt, om een pre-clean actie toe te voegen.
De pre-clean actie is hetzelfde als de pre-build actie.

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

En daar ga je. Nu kunt u de * .js bestanden in te checken, kan het * Ts bestand te bewerken (je nodig hebt om het * .js bestand onbeveiligd te maken, of achteraf uit te voeren build)

Als u wilt het uit te voeren op een per bestand basis, is de opdracht:

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

of in XML-vorm:

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

En in plaats van het verwijderen van het kenmerk alleen-lezen groothandel in de pre-build actie, kunt u ook de individuele bestanden met de TFS command-line tool:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

: Door de manier, kunt u een lijst met VisualStudio / MSBuild macros hier
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017

En om uit te vinden de werkelijke waarde van de macro:

  • klik met de rechtermuisknop op het project in de Solution Explorer en selecteer Eigenschappen
  • selecteert u de Build Events tab
  • klikt u op de Bewerken pre-build of post-build bewerken knop, ofwel is prima
  • in het venster dat verschijnt, klikt u op de Macro -knop
  • scroll naar beneden in de lijst totdat u vinden ProjectDirin het volgende venster is de actuele waarde

Ook, in plaats van de pre-build evenement in het project, kunt u de kassa als BeforeBuild-target commando toe te voegen. Op die manier kan niemand accidentially verwijderen als ze zetten iets in pre-build in project-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>
antwoordde op 06/02/2019 om 13:09
bron van user

stemmen
0

In antwoord op mensen suggereren uitsluiting van Js bestanden van het project, moet ik zeggen dat dit alleen kan werken in kleine en enkele oplossing software. In een grote software-applicatie dwz een ERP, bestaat er meestal meerdere oplossingen per module, en toen hebben elk Js bestanden voor zichzelf, het leveren van js en andere bronbestanden van deze soort wordt meestal gemaakt door het maken van hen "Embedded hulpbronnen" en een aantal aangepaste virtueel pad provider of iets dergelijks.

Dus, wat werkt? Deze oplossing kan u helpen, ik stel voor dat je het proberen.

Maar anyways, zoals AM genoemd. Dit is een bekende bug. En ik denk dat de beste oplossing voor het typoscript compiler zou zijn om bestanden te schrijven Js overslaan voor degenen Ts bestanden die zijn alleen-lezen (ingecheckt) zichzelf.

antwoordde op 06/07/2015 om 06:14
bron van user

stemmen
0

Ik ervoer dit gisteren.

Zoals iano gezegd, niet de gegenereerde js TFS toe te voegen; of toe te voegen tf checkouten tf checkinaan de BeforeBuild doel.

antwoordde op 20/11/2012 om 13:43
bron van user

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