2014-06-11 23 views
9

Projenin yapım özelliğinde belirlenen koşullu derleme sembollerini okuması gereken bir MSBuild komut dosyasına sahip olduğum bir durumda takılıyorum. Ben $ (DefineConstants) ben üstlendiğiniMSBuild ile proje özelliklerinde koşullu derleme sembolleri nasıl eklenir?

<PropertyGroup> 
    <DefineConstants>$(DefineConstants);INTER</DefineConstants> 
    </PropertyGroup> 


    <Target Name="Compile"> 
    <Message Text="$(DefineConstants)"/> 
    <MSBuild Projects="CustomAssemblyInfo.csproj" Targets="Rebuild" Properties="DefineConstants=$(DefineConstants)" /> 
    </Target> 

benim MSBuild komut dosyasında aşağıdaki kodu var; ayarlanan koşullu derleme sembollerinin değerini içerecek ve bu durumda INTER gibi bir değer ekleyeceğim ancak proje özelliklerinde ayarlanmış olan değerler buraya geçilmeyecek. Neyi eksik olduğum konusunda yardım edebilir mi? MSBuild görevin Properties mülkiyet yoluyla geçirilen

+0

emin, ama belki o da nasıl o özelliğini ayarladığımız * * bize iyi bir fikir olacağını Değil proje özellikleri…? – stakx

+0

Onları şu şekilde iletiyorum http://tinypic.com/r/1qgzle/8 –

+0

$ (DefineConstants) değerini Sadece gösterir; INTER, hiçbir şeyin $ (DefineConstants) olarak geçtiği anlamına gelir. –

cevap

14

Özellikleri komut satırında /p: geçti aynıdır küresel özelliklerini, diyorlar. koşulsuz, yani .csproj numaranızdaki DefineConstants tanımlanmış olanları bile başka bir özellik veya çevre değişkenine göre önceliklidirler. Kendi DefineConstants ilk yüzden <DefineConstants>TRACE;DEBUG;$(Constants)</DefineConstants> olarak DefineConstants yeniden tanımlamak ve bunun yerine MSBuild/NAnt komut Constants geçerdi proje özellikleri penceresinde $(Constants) gibi bir şey eklemek önlemek için, daha sonra .csproj den ayarlanmasını önlemek geçerek

.

Düzenleme: @ sǝɯɐs comment gereğince aşağıda

https://i.imgur.com/jZiVy7J.png

enter image description here

+0

Teşekkürler llya, ama merak ediyorum neden sadece msbuild dosyalarındaki proje özelliklerinden aktarılan değerleri okuyamıyorum? –

+0

Benim durumumda, sadece geçenleri okumak istiyorum ve sadece msbuild'de biraz daha sabitler eklemek istiyorum. Ayrıca, MSBuild için ayrı bir XML dosyanız olduğunu lütfen unutmayın, csproj'un kendisini değiştirmeyi kullanmıyorum. –

+0

@AfrazAli bunu okuyamazsınız çünkü özel komut dosyasından proje dosyasına gidersiniz ve başka şekilde değil, henüz yüklenmemiş ve değerlendirilmemişlerdir. XML olarak veya Microsoft.Build.Evaluation ile metin olarak kendiniz okuyarak ve ayrıştırmayı deneyebilirsiniz. Aksi takdirde, proje özelliklerine gidip Build sekmesi altında 'koşullu derleme sembollerine' bir $ (Placeholder) eklemeniz gerekir. MSBuild, NAnt veya .bat komut dosyanızdan. –