2012-10-31 15 views
10

Ben ve Visual Studio (* nix dahil) hem MonoDevelop üzerinde gelişmesini sağlamak için çalışıyorum hangi bir açık kaynak projesi var. Yeni keşfedilen gereksinimlerimden biri, bir çıktılı dosyayı bir dizinden diğerine (göreli yol) kopyalamam gerekiyor.MonoDevelop ve Visual Studio'da post-build komut dosyası ile bir proje oluşturmanın en iyi yolu?

Windows, copy komutuna sahiptir, * nix ise cp komutuna sahiptir. Bunu her iki platformda da kullanmanın ve komutların bu farklılığını çözmenin en iyi yolu nedir?

+0

, sen cygwin içine bir göz atmak isteyebilirsiniz sağlar " Linux için bir Windows görünümü ve ortamı. " burada daha fazla bakın: http://www.cygwin.com/ – nieve

+1

@nieve ben yüklü buna sahip, sadece yüklemek için Windows üzerinde projemi derlemek isteyen herkesi zorlamak istemedim – Earlz

+0

Bir bir tür ekleyebilirsiniz Yapılandırma komut dosyası (rake/make gibi bir şey), diğer geliştiricilerin ortamını kurmak için, post-build betiğine OS kararına göre karar verilecektir. MonoDevelop'u nasıl kuracağınıza bakarsanız, farklı ortamlar/işletim sistemleri için tamamen farklı mekanizmalar kullandıklarını göreceksiniz. – nieve

cevap

0

Sen Python gibi bir dilde yazılan inşa senaryo yazmaya başladı. Veya diğer geliştiricilerin CygnWin'i yüklemek için bir seçenek olarak GnuWin32 CoreUtils'i yüklemelerini isteyebilirsiniz. CoreUtils içerir cp. Ardından koşulsuz olarak cp'yi kullanabilirsiniz.

8

Sen ortama bağlı olarak farklı sonrası inşa etkinlik için $OS değişkeni kullanabilirsiniz. Bunu yapmak için, gibi elle csproj düzenlemeniz gerekir: Eğer dayanacağı eğer

<PostBuildEvent Condition="'$(OS)' == 'Windows_NT' "> 
    dir 
</PostBuildEvent> 
<PostBuildEvent Condition="'$(OS)' != 'Windows_NT'"> 
    ls 
</PostBuildEvent> 
5

Mümkün olduğu yerleşik ziyade özel kabuk komut dosyası daha MSBuild görevler, davranış XBUILD üzerinde çalışmak genellikle edecek (ve dolayısıyla MonoDevelop?) Herhangi bir değişiklik yapmadan, platforma özel * projeye ihtiyaç duymaz.

örn:

<Target Name="AfterBuild"> 
      <Copy SourceFiles="foo.txt" DestinationFolder="$(OutDir)" /> 
</Target> 

Bu mono dokümanlardan şudur: herkes için bir komut dosyası bizlere gerçekten kararlılar ise http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/#prepostbuildevents