2010-02-27 15 views
5

Visual Studio - VB.NET'te Yapı Olayları'nda derleyici sabitlerini kullanmak için herhangi bir yöntem var mı? TEST_EDITION=TRUE Ben eğer FALSE sonra ben başka bir şey kaçıyorum böylece Sonrası Yapı olay sırasında bir yürütülebilir çalıştırmak istediğiniz tanımlanırYapı olaylarında derleyici sabitlerini kullanma

Eğer

Senaryo (özellikle olayları Post-İnşa).

Farklı sürümler için farklı yükleyicileri oluşturmak için kullanılabilir.

Not; Birisi anlaşılacağı önce: Hayır Visual Basic sözdizimi hakkında Değil emin

+0

Ne yapmaya çalıştığınız hakkında daha fazla açıklamada bulunursanız yardımcı olur. –

+0

Derleyici sabitine dayalı bir koşullu oluşturma olayı yazmaya çalışıyorum? Bu açık değil miydi? -Ama bunu temizlemek için bir örnek ekledim. –

cevap

11

Evet, $ (DefineConstants) makrosu kullanılabilir ve bir derleme olayında test edilebilir. Örneğin, Proje + Derleme, Gelişmiş Derleme Seçenekleri Özel sabitleri = Testi böyle test edilebilir: Test = DOĞRU veya bileşik sabitleri gibi

if /i "$(DefineConstants)" NEQ "TEST" goto skiptest 
echo Setting up for test environment 
:skiptest 

Daha karmaşık özel sabitleri farklı ayrıştırılması gerekir. Kuşkusuz ki, hızlı bir şekilde nasıl çalıştığını anlamaya çalışmaktan vazgeçtim FOR command.

+0

müthiş güncelledim, teşekkürler. –

0

gibi nant, msbuild falan kullanmak istemiyorum, ancak aşağıdaki hile C++ tarafından kullanılabilir:

: Dosya global_inc.bat olarak okur
SET PARAMETER=TRUE 

Bu, oluşturma sonrası olayda çağrılan bir toplu komut dosyası tarafından girilebilir.

#define PARAMETER const int parameter 
#define SET /**/ 
#include "global_inc.bat" 
; 
#undef PARAMETER 

postbuild adım, bu gibi görünüyordu:

call global_inc.bat 
if "%PARAMETER%" == "TRUE" echo True 

Bir diğer olasılık bir .vb dosyası oluşturmak için önceden inşa edilmiş adım olacaktır, şu şekilde C++ kod dosyası kullanılır Postbuild adımında kullanılan bir yapılandırma dosyası.

+0

Bunun, bu sınırlama için geçici çözümünüz olduğunu varsayıyorum, çünkü gerçekten bir şey derlemem gerekmiyor. Tüm yapmak istediğim, yalnızca bir post-build olayı sırasında bir sabit TRUE olduğunda bir çalıştırılabilir çalıştırın. –

+0

, soruyu daha yakın olacak şekilde değiştirdi. nobugz tarafından cevap bana daha iyi bir çözüm gibi görünüyor ancak – Vlad

0

MsBuild PostEvents'ı denediniz mi? Bu bir .csproj bir özü ... ama sen bir toplu iş dosyası veya yürütülebilir çalışmasını sağlar TaskExec Hedef, ile birlikte kullanabilirsiniz aynı dosyaları

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets. 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    </Target> 
    --> 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    <Copy SourceFiles="$(OutputPath)$(AssemblyName).dll" DestinationFolder="$(BinariesFolder)" ContinueOnError="true" /> 
    </Target> 

vbproj için de geçerlidir.

<Target Name="DoSomething"> 
    <Exec Command="D:\DoSomething.exe"/> 
</Target> 
+0

msbuild kullanmak istemiyorum çünkü şu anki yapı sunucusu kurulumumuz için uygun değil. –

+0

Ayrıca Msbuild bunu destekliyorsa bile emin değilim. –

+0

MsBuild için bir Toplu İş dosyası veya Yürütülebilir dosya çalıştırmanıza izin veren bir ExecTask vardır ...Cevabımı –