2010-02-27 35 views
5

Có cách nào để sử dụng hằng số trình biên dịch trong Sự kiện xây dựng trong Visual Studio - VB.NET không? (Đặc biệt là trong Post-Xây dựng các sự kiện)Sử dụng hằng số trình biên dịch trong các sự kiện xây dựng

Kịch bản

Nếu TEST_EDITION=TRUE được định nghĩa tôi muốn chạy một file thực thi trong trường hợp sau xây dựng vì vậy nếu nó FALSE sau đó tôi sẽ chạy cái gì khác.

Điều này có thể được sử dụng để tạo các trình cài đặt khác nhau cho các ấn bản khác nhau.

P.S. Trước khi ai đó đề xuất: Không, tôi không muốn sử dụng nant, msbuild hoặc một cái gì đó như thế

+0

sẽ giúp ích nếu bạn giải thích thêm về những gì bạn đang cố gắng làm. –

+0

Tôi đang cố gắng viết một sự kiện xây dựng có điều kiện dựa trên hằng số trình biên dịch? Không rõ thế sao? - nhưng tôi đã thêm một ví dụ để xóa nó. –

Trả lời

11

Có, macro $ (DefineConstants) có sẵn và có thể được kiểm tra trong sự kiện xây dựng. Ví dụ, dự án + Biên dịch, nâng cao Compile Options, hằng Tuỳ chỉnh = kiểm tra có thể được kiểm tra như thế này:

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

hằng tùy chỉnh phức tạp hơn như thử nghiệm = hằng TRUE hoặc hợp chất cần phải được phân tích khác nhau. Phải thừa nhận rằng tôi nhanh chóng từ bỏ việc cố gắng tìm ra cách sử dụng số điện thoại FOR command.

+0

tuyệt vời, cảm ơn. –

0

Không chắc chắn về cú pháp của Visual Basic, nhưng mẹo sau có thể được sử dụng bởi C++: tệp global_inc.bat đọc là:

SET PARAMETER=TRUE 

Điều này có thể được nhập bằng tập lệnh theo lô được gọi trong sự kiện sau xây dựng. CáC++ mã C sử dụng các tập tin như sau:

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

Bước postbuild trông như thế này:

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

Một khả năng khác sẽ cho bước prebuild để tạo một file .vb, cũng như tệp cấu hình được sử dụng trong bước đăng.

+0

Tôi cho rằng đây là cách giải quyết của bạn cho giới hạn này, bởi vì tôi không thực sự cần phải biên dịch bất cứ điều gì. Tất cả tôi muốn làm điều này chạy một thực thi chỉ khi một hằng số là TRUE trong sự kiện post-build. –

+0

đã thay đổi ví dụ để gần hơn với câu hỏi. câu trả lời của nobugz dường như là một giải pháp tốt hơn tuy nhiên – Vlad

0

Bạn đã thử MsBuild PostEvents chưa? đây là một trích một csproj ... nhưng cùng áp dụng cho vbproj file

<!-- 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> 

Bạn có thể sử dụng nó với các TaskExec Target, cho phép bạn chạy một tập tin thực thi hoặc thực thi.

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

Tôi không muốn sử dụng msbuild vì nó không phù hợp với thiết lập máy chủ xây dựng hiện tại của chúng tôi. –

+0

Ngoài ra tôi thậm chí không chắc chắn nếu Msbuild hỗ trợ này. –

+0

Có một ExecTask cho MsBuild cho phép bạn chạy một tập tin Batch hoặc thực thi ...Tôi đã cập nhật câu trả lời của mình –

Các vấn đề liên quan