"Build Solution" (Ctrl + F6) yaptığımda FAKE derleme komutumu çağrıştıran bir çözüm arıyorum. Varsayılandan başka bir hedef belirtmenin bir yolu için bonus puanları.Visual Studio'yu, çözümümüzü oluştururken FAKE kullanacak şekilde nasıl alabilirim?
cevap
Bugüne kadar bulunan çıkış penceresi kullanmak için ve bağımsız değişkenler için istemi
Tools -> External tools...
Set üzerinden harici bir araç gibi sahte tanımlamaktır yakın. Eğer varsayılan inşa etmek girmek bir hedef sağlamak ya da sadece basabilirsiniz onu çağırdığınızda Sonra
Tools -> Options -> Environment -> Keyboard -> Tools.ExternalCommand6
üzerinden bir klavye kısayolu tanımlar.
Bu sorunu başka bir şekilde çözdüm. Bu, csproj dosyalarının manuel olarak düzenlenmesini gerektirir ve hile, Build
, Clean
ve Rebuild
hedeflerinin koşullu olarak geçersiz kılınmasıdır.
Önce özel fake.targets
dosyası oluşturdum ve çözüm seviyesinde Targets
klasöre kaydedilir:
<PropertyGroup>
<FakeTargetsPath>..\Targets\fake.targets</FakeTargetsPath>
</PropertyGroup>
<Import Project="$(FakeTargetsPath)" Condition="Exists($(FakeTargetsPath)) And '$(RealBuild)'!='true'" />
: Eklediğim her
*.csproj
proje dosyasında
<Project />
bölümünün alt kısmındaki,
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<Exec Command="packages\FAKE\tools\FAKE.exe build.fsx Build proj=$(ProjectPath) conf=$(Configuration) plat=$(Platform)" WorkingDirectory="..\" />
</Target>
<Target Name="Rebuild">
<Exec Command="packages\FAKE\tools\FAKE.exe build.fsx Rebuild proj=$(ProjectPath) conf=$(Configuration) plat=$(Platform)" WorkingDirectory="..\" />
</Target>
<Target Name="Clean">
<Exec Command="packages\FAKE\tools\FAKE.exe build.fsx Clean proj=$(ProjectPath) conf=$(Configuration) plat=$(Platform)" WorkingDirectory="..\" />
</Target>
</Project>
Sonraki
Not:FakeTargetsPath
csproj
dosyaya göre olur.
Son adım RealBuild = true
ile MSBuild çağırır build.fsx
yaratmaktı:
#r @"packages/FAKE/tools/FakeLib.dll"
open Fake
let solution = "solution.sln"
let commonBuild target =
let project = getBuildParamOrDefault "proj" solution
let configuration = getBuildParamOrDefault "conf" "Release"
let platform = getBuildParamOrDefault "plat" "AnyCPU"
let setParams defaults =
{ defaults with
Verbosity = Some(Quiet)
Targets = [ target ]
Properties =
[
"Configuration", configuration
"Platform", platform
"RealBuild", "true"
]
}
build setParams project
Target "Build" (fun _ ->
commonBuild "Build"
)
Target "Clean" (fun _ ->
commonBuild "Clean"
)
Target "Rebuild" (fun _ ->
commonBuild "Rebuild"
)
RunTargetOrDefault "Build"
Çok ilginç. Bu 'RealBuild' seçeneğinin etkisi nedir? – VillasV
- 1. Python 3.5, Windows üzerinde Visual C++ derleyicisini kullanacak şekilde yapılamıyor
- 2. Tomcat'i SSL Kullanacak Şekilde Yapılandırma
- 3. GameMaker'ı Pencereli Alanı Kullanacak Şekilde Ayarlayın
- 4. FAKE komut dosyasındaki değişkenler nasıl denetlenir?
- 5. cscope, cscopequickfix quickfix kullanacak şekilde ayarlandığında etiket yığınına etiket kaydetmez
- 6. Mercurial'i birleştirme için WinMerge'i cygwin altında kullanacak şekilde nasıl yapılandırabilirim?
- 7. Betamax'ı Spock testlerim için SSL kullanacak şekilde nasıl yapılandırabilirim?
- 8. Menü "fake" seçeneği
- 9. Webkit-fake-url'ye erişme
- 10. npm'yi bir .pac dosyası kullanacak şekilde ayarlayabilir miyim?
- 11. Neden "paket güncellemesi", Gemfile Rails 3.0.5'i kullanacak şekilde güncellenmiyor?
- 12. Android'i RTSP/AVP/TCP aralıklı olarak kullanacak şekilde zorlamak
- 13. java.util.logging, sıkıştırılmış günlük dosyalarını kullanacak şekilde yapılandırılabilir mi?
- 14. Elastic Search'ü kendi Stop Word listemi kullanacak şekilde özelleştirebilir miyim?
- 15. Tüm istek koşulları için Capybara.javascript_driver ürününü kullanacak şekilde RSpec'i yapılandırın
- 16. Magento - Ürün değerlerini varsayılan değerleri kullanacak şekilde ayarla
- 17. Visual Studio ile oluştururken IPA dosyası bulunamadı
- 18. Visual Source Safe 6.0 ile tümleştirmek için VB6 nasıl alabilirim?
- 19. MarshalAs (UnmanagedType.LPWStr) temizleme bellek kullanacak?
- 20. Bir Android cihazında Fake Gelen Çağrı
- 21. SBT, Java 8'i nasıl kullanacak?
- 22. FAKE ile bir XML dosyasını işlemek
- 23. WebLogic 10.3 Web Uygulamasını SAML 2 SSO ve Kimlik Sağlayıcısı Kullanacak şekilde nasıl yapılandırabilirim?
- 24. Linux: Bir USB aygıtını aynı ttyUSB numarasını kullanacak şekilde nasıl zorlayacağız
- 25. Visual Studio 2010, profil oluştururken çöküyor, raporu analiz ettikten sonra
- 26. directory.GetFiles, öğeleri bulduğu şekilde tükürmek için nasıl alabilirim?
- 27. Bu metni sola kadar oturacak şekilde nasıl alabilirim?
- 28. Görüntüyü yüklemeden .NET'te görüntü boyutlarını nasıl güvenilir bir şekilde alabilirim?
- 29. Android Anahtarı bir anahtardan doğru şekilde nasıl alabilirim?
- 30. Programımı gelecekteki değerleri doğru şekilde çalıştırmak için nasıl alabilirim?
Ben doğrudan cevabım yok ama Paket 'paket.targets' dosyası (vardır https://github.com/fsprojects/ Paket/blob/68969d970bf2d60fb4e280e4365b6f87b9a7e285/.paket/paket.targets), bir çözüm (temelde, yürütülebilir dosyayı çalıştırarak) oluşturulduğunda Paket'i çalıştırır. Eminim FAKE için de aynısını yapabilirsin - ama MS Build XML'le ilgili bir şeyler yazacaksın ... –
Post-build olayı? http://stackoverflow.com/a/1491413/126014 –
Paket'in bunu nasıl gerçekleştirdiğine baktım: BuildDependsOn kullanıyorlar, ancak bu bir FAKE komut dosyası için işe yaramaz. Kendisine bir MSBuild görevini yürüten FAKE "Build" hedefi, FAKE komut dosyasını yinelemeli olarak tetikler. Bu çalışmayı güzelce yapabilmek için henüz uygun bir yol bulamadım. – GeorgS