Problémy s strojopisem a TFS

hlasů
10

Jedná se pravděpodobně o problém s TFS Visual Studio projekt proveden společně s strojopisem.

Na sestavení TSC nelze přepsat soubor jen pro čtení JS hází přístup odepřen chybu.

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. 

Je to možné , aniž by výslovně mimo kontrolu souborů použít stavět s TSC?

Položena 08/10/2012 v 11:30
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
7

Nekontrolují v souboru JS. Využíváme tento přístup v naší strojopisu projektu a funguje to dobře. Není potřeba mít generované JS v řízení zdrojů; myslet na JS soubory jako výstup projektu, jako EXE nebo DLL.

Odpovězeno 14/10/2012 v 02:59
zdroj uživatelem

hlasů
4

Nyní, pokud váš build server je nakonfigurován pro strojopisu horizontu TSC poběží a vytvářet soubory JavaScriptu.

Zde je další alternativní řešení, pro případ, že nechcete, aby se odstranily soubor JS. Vzhledem k tomu, když odstraníte JS pro současné době, a jakákoliv jiná kontrola developer v těchto souboru znovu do TFS, bude stejná chyba přijde dojít. (Více než ty, které jsou skryté soubory, takže pokud nechcete check-in pečlivě, mohou být odbaven v TFS)

V tomto případě můžete spustit Pre-build událost, která odstraní všechny atributy jen pro čtení souborů JS pro tento projekt.

1. Klikněte pravým tlačítkem myši na projekt a Otevřete okno Project Property

2. Vyberte Vytvořit událost kartu

zadejte popis obrázku zde

Tím bude zajištěno, celý JS uvolnění souboru Jen pro čtení atributy a tam nebudou žádné chyby pro zápis do souboru se nezdařilo.

Snad to pomůže.

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

Odpovězeno 28/11/2015 v 06:05
zdroj uživatelem

hlasů
1

Zde je řešení: Chcete-li zachovat své soubory JS as v rámci projektu a řízení zdrojů.

Použijte místní pracovní prostor, protože to neplatí jen pro čtení vlajku na soubory, takže ukládání souborů JS nevyžadují check-out, aby mohla být zapsána do.

Zjistil jsem to, protože jsem neměl vystavovat tento problém, ale jiní v mém týmu byli, takže po nějaké kopání jsem zjistil, že to, co bylo jinak. Byl jsem pomocí místního pracovního prostoru namísto pracovního prostoru serveru.

Ostatní členové týmu převeden na místní pracovní prostor a jsou hladce znovu.

Odpovězeno 18/07/2013 v 11:30
zdroj uživatelem

hlasů
1

Jedná se o známou chybu (nebo chybějící funkce):

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

Odpovězeno 08/10/2012 v 14:52
zdroj uživatelem

hlasů
0

Problém:
Pokud přidáte generované * JS soubory TFS, pak TFS zápis chrání, pokud je zkontrolovat, nebo nekontrolují ven. Takže pokud změníte .TS soubor *, nemůže generovat * JS soubor, protože soubor je chráněn proti zápisu.
==> Error
Ale pokud nechcete kontrolovat je in, bude * JS soubor chybí, pokud se dostanete nasazení.
==> error Sestavuje, ale Runtime
Také, pokud ji budete potřebovat jako vložený prostředek, nelze vyloučit soubor ...

Další problém 1:
Pokud spustíte „Znovu vytvořit řešení“, Visual Studio chce odstranit * JS soubory vytvořené strojopisu, před spuštěním stavět.
Ale mazání není možné, protože soubor * js soubory jsou chráněna proti zápisu ...
==> Error

Dalším problémem 2:
Vzhledem k tomu, čistý není „Build“, pre-build události nejsou prováděny na čistý ...
Takže pokud jste odstranit ochranu proti zápisu na pre-build, bude to fungovat, když to „stavět“, ale to se nezdaří, pokud zvolíte „Obnovit“, a to bez ohledu na to, zda se vám to v roztoku nebo v projektu.

Dalším problémem 3:
Nelze definovat předem čisté příkaz pro pořádání akcí v editoru projektově nastavení.

Takže, tady je to, co můžete udělat:
Run attrib -r /s(odstraňuje ochranu proti zápisu) na vlastní typescripted * JS soubory jako pre-build akci.
např

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

Tato metoda funguje, protože * expanduje:

  • V případě, že soubor neexistuje, není žádná chyba, protože žádný příkaz je vykonán.
  • V případě, že soubor neexistuje, není žádná chyba, je příkaz spuštěn.

Pokud ho už běží na jméno souboru, to by selhat, pokud neexistuje soubor.

Nyní je třeba upravit soubor projektu (* .csproj) rukou, přidejte předem čistou akci.
Předem čistá akce je stejná jako pre-build akci.

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

A je to. Nyní si můžete zkontrolovat * JS soubory, můžete upravit .TS soubor * (budete muset zrušit ochranu * JS soubor nebo spustit sestavení později)

Chcete-li jej spustit na základě souboru za, je příkaz:

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

nebo v XML podobě:

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

A namísto odstranění atribut jen pro čtení velkoobchod v pre-build akci, můžete také zkontrolovat jednotlivé soubory se s nástrojem TFS příkazového řádku:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"

Mimochodem, můžete najít seznam VisualStudio / MSBuild makra zde:
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017

A zjistit skutečnou hodnotu makra:

  • pravým tlačítkem myši na projekt v aplikaci Solution Explorer, zvolte Vlastnosti
  • vyberte Build Events kartu
  • klepněte na Edit pre-build nebo upravit post-build tlačítko, a to buď v pořádku
  • V okně, které se objeví, klepněte na makra tlačítko
  • Posun dolů v seznamu, dokud najdete ProjectDirv příštím tabule je jeho skutečná hodnota

Také, namísto použití pre-build události v projektu, můžete přidat jako pokladna BeforeBuild-cílové velení. Tak nikdo nemůže náhodným odstranit jej v případě, že dát něco do pre-stavět v projektových nastaveních.

  <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>
Odpovězeno 06/02/2019 v 13:09
zdroj uživatelem

hlasů
0

V odpovědi na lidi, které naznačují vyloučení JS souborů z projektu, musím říci, že to může fungovat pouze v malých a jediné řešení softwaru. Ve velké softwarové aplikace, tj ERP, tam obvykle existuje více řešení na modulu, a když každý z nich má JS soubory pro sebe, dodává JS a další zdrojové soubory tohoto druhu je obvykle tím, že je „vložené prostředky“ a nějaký zvyk virtuální cesta poskytovatel, nebo tak něco.

Takže, co funguje? Toto řešení vám mohou pomoci, navrhuji, abyste si to vyzkoušet.

Ale tak jako tak, jak je uvedeno AM. To je známá chyba. A myslím, že nejlepším řešením pro strojopis kompilátor by bylo přeskočit psaní js soubory pro ty Ts soubory, které jsou jen pro čtení (odbavení) sami.

Odpovězeno 06/07/2015 v 06:14
zdroj uživatelem

hlasů
0

I zkušený to včera.

Jak je uvedeno Iano nepřidávejte generované JS TFS; nebo přidat tf checkouta tf checkindo cíle BeforeBuild.

Odpovězeno 20/11/2012 v 13:43
zdroj uživatelem

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