Sorun:
Eğer TFS * .js oluşturulan dosyalar eklerseniz bunları kontrol etmek veya onları kontrol yoksa, o zaman TFS, onları yazmaya korur. Eğer * ts dosyasını değiştirirseniz dosya yazmaya karşı korumalı olduğu için Yani, * .js dosyasını oluşturamaz.
==> Hata
bunları kontrol yoksa dağıtmak çalıştırmak Ama eğer * .js dosyası eksik olacaktır.
==> derler, ama Runtime hatası
katıştırılmış kaynak olarak gerekirse Ayrıca, dosyayı hariç tutamazsınız ...
Ek sorun 1:
Eğer "yeniden Solution" çalıştırırsanız, Visual Studio bu yapı yürütmeden önce, * typescript tarafından oluşturulan .js dosyaları silmek istiyor.
* .Js dosyaları yazmaya karşı korumalı ... çünkü Ama silme, mümkün değildir
==> Hata
Ek sorun 2:
temiz olmadığından, "İnşa" olaylar temiz idam edilmez önceden inşa ...
Böylece önceden inşa yazma korumasını kaldırmak, eğer bunu size "inşa" yoksa çalışır, ancak Eğer bakılmaksızın Eğer çözeltide veya projede bunu olsun, seçin "yeniden" eğer başarısız olur.
Ek sorun 3:
Sen proje ayarları editörü önceden temiz olay komutunu tanımlayamazsınız.
Yani, burada yapabilecekleriniz:
Run attrib -r /ssizin typescripted üzerinde (kaldırır yazma koruması) * Önceden inşa eylem olarak js dosyaları.
Örneğin
attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"
* Genişletilir çünkü bu, çalışır:
- Dosya yoksa hiçbir komut yürütülür çünkü, hiçbir hata yoktur.
- Dosya varsa, hiçbir hata var, komut yürütülür.
Eğer bir dosya üzerinde çalıştırmak isterseniz dosya yoksa, eğer başarısız olur.
Şimdi, bir ön-temiz işlem eklemek için, elle proje dosyası (* .csproj) düzenlemeniz gerekir.
Önceden temiz eylem öncesi inşa eylem olarak aynıdır.
<Target Name="BeforeClean">
<!-- DO YOUR STUFF HERE -->
<Exec Command="attrib -r /s "$(ProjectDir)Resources/Scripts/0/*.js"" />
</Target>
Ve işte oldu. Şimdi de * .js dosyaları kontrol edebilirsiniz, * ts dosyasını düzenleyebilirsiniz (Eğer * Js dosya korumasını gerekir, ya da sonradan yapı çalıştırın edeceğiz)
Eğer bir dosya için ayrı ayrı çalıştırmak isterseniz, komut:
if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)
veya XML şeklinde bulunur:
<Exec Command="if EXIST "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js" (
attrib -r "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
)" />
Ve yerine kaldırma salt okunur da TFS komut satırı aracı ile tek tek dosyaları kontrol edebilirsiniz öncesi inşa eylem toptan bağlıyor:
"$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"
: Bu arada, burada VisualStudio / MsBuild makroları listesini bulabilirsiniz
https://docs.microsoft.com/en-us/cpp/ide/common-macros-for-build-commands-and-properties?view= vs-2017
Ve makro gerçek değerini öğrenmek için:
- Sağ Solution Explorer projenizde tıklayın seçeneğini Özellikleri
- seçmek Olayları oluştur sekmesini
- tıklayın Düzenleme öncesi yapı veya post-build düzenleyin ya gayet düğmesine
- Açılan pencerede, tıklayın Makro düğmesini
- Eğer bulana kadar listeyi aşağı kaydırma
ProjectDirsonraki bölme gerçek değerdir içinde,
Ayrıca, yerine projede ön build olayı kullanmak yerine, BeforeBuild hedef komutu olarak ödeme ekleyebilir. Onlar proje ayarlarında önceden inşa içine bir şey koyarsanız bu şekilde kimse kaza ile kaldırabilirsiniz.
<Target Name="BeforeBuild">
<Exec Command=""$(DevEnvDir)CommonExtensions/Microsoft/TeamFoundation/Team Explorer/tf.exe" checkout /lock:none "$(ProjectDir)Resources/Scripts/0/leaflet.EasyAjax.js"" />
</Target>