2012-03-06 6 views

cevap

0

Seni doğru anlıyorsam, Visual Studio'da bir dosya açarken MSBuild ile komut satırından bir dosya açmak ister misin?

Böyle bir durumda, Visual Studio'da bir PreBuild veya PostBuild belirtin.

  1. Sağ
  2. istenen dosyayı
+0

hayır - İçinde özel Msbuild hedefleri olan bir csproj var.. Visual Studio'da oluşturmayı tıklattığımda, hedefte yer alan özel bir eylemle sonuçlanmasını istiyorum… Condition = "StartedInVS()" gibi bir şey. Komut linke (yani msbuild ...) çalıştırdığımda, bu koşulun başarısız olmasını istiyorum. Öyleyse, MSBUILD, bir hedefte hedefi nasıl/ne dediğini nasıl tespit edebilir? – zekeyeehaw

+0

Haklısınız, özür dilerim. Önceki cevabım yanlış ve yapı olayları ne olursa olsun yürütülür. Hedefinizi nasıl gerçekleştireceğinizi açıklayan başka bir yanıt daha ekledim ve emin olmak için bu sefer test ettim. – BryanJ

2
açmak için bir Öncesi veya Post ya olayı kurmak ekle Olaylar sekmesini seçin çözüm explorer proje üzerinde tıklayıp Özellikler '
  • seçmek

    Bir .csproj proje dosyasına bir özellik ekleyin, örneğin:

    <PropertyGroup> 
        <FromMSBuild>false</FromMSBuild> 
    </PropertyGroup> 
    

    Ardından çalıştırmak istediğiniz görevde, bu özelliği değerlendiren bir koşul koyun.

    Elbette
    <Target Name="BeforeBuild"> 
    <Exec Command="C:\Windows\Notepad.exe" Condition="$(FromMSBuild)" /> 
        </Target> 
    

    çalıştırdığınızda, bu doğru (FromMSBuild) mülkiyet $ ayarlanmasına bağlıdır: Eğer notepad.exe açmak istiyorsanız Örneğin, inşa görsel stüdyo komut satırından yürütülür ve DEĞİLDİR zaman şöyle, komut satırı üzerinden inşa:

    MSBuild myProject.csproj /p:FromMSBuild=true 
    
  • 32

    Alıntı MSDN page den:

    Visual Studio içindeki bina, mülkiyet $ (BuildingInsideVisualStudio) true olarak ayarlanır. Bu, projenizin veya .targets dosyalarında, yapının farklı şekilde davranmasına neden olacak şekilde kullanılabilir.

    Örnek bunun kullanılabilecek nasıl senin * proj veya .targets dosyası:

    <PropertyGroup> 
        <MyProperty Condition="'$(BuildingInsideVisualStudio)' == 'true'">This build is done by VS</MyProperty> 
        <MyProperty Condition="'$(BuildingInsideVisualStudio)' != 'true'">This build is done from command line of by TFS</MyProperty> 
    </PropertyGroup> 
    
    İlgili konular