2010-10-12 25 views
6

Tôi hiện đang có các kịch bản sau đây là bài xây dựng trên một dự án:bài viết xây dựng kịch bản trở errorlevel 255

if $(ConfigurationName) == "Debug (x64)" || $(ConfigurationName) == "Release (x64)" (goto :x64) 
if $(ConfigurationName) == "Debug" || $(ConfigurationName) == "Release" (goto :x86) 

:x64 
copy "$(SolutionDir)References\x64\System.Data.SQLite.dll" "$(TargetDir)System.Data.SQLite.dll" 
goto :default 

:x86 
copy "$(SolutionDir)References\System.Data.SQLite.dll" "$(TargetDir)System.Data.SQLite.dll" 
goto :default 

:default 
copy "$(SolutionDir)References\System.Data.SQLite.Linq.dll" "$(TargetDir)System.Data.SQLite.Linq.dll" 

(nó sao chép x86 hoặc x64 phiên bản của hội đồng để các thư mục đầu ra theo Configuration)

Kịch bản lệnh này trả về mức lỗi 255 và vì tôi không có ý tưởng về việc tạo tập lệnh theo lô, ai đó có thể chỉ cho tôi lỗi không?

Trả lời

5

Theo như tôi biết, các tệp hàng loạt IF không hỗ trợ C như cú pháp ORING cùng với nhiều biểu thức.

Vì vậy, như một lần thử đầu tiên, thay đổi những dòng đầu tiên của kịch bản của bạn từ:

if $(ConfigurationName) == "Debug (x64)" || $(ConfigurationName) == "Release (x64)" (goto :x64) 
if $(ConfigurationName) == "Debug" || $(ConfigurationName) == "Release" (goto :x86) 

tới:

if "$(ConfigurationName)"=="Debug (x64)" goto :x64 
if "$(ConfigurationName)"=="Release (x64)" goto :x64 
if "$(ConfigurationName)"=="Debug" goto :x86 
if "$(ConfigurationName)"=="Release" goto :x86 

Cũng lưu ý thêm " quanh $(ConfigurationName).
Phần còn lại sẽ hoạt động tốt.

9

Trong cmd.exe, gõ net helpmsg 255:

Các thuộc tính mở rộng là không phù hợp.

Tôi không biết đó có phải là lỗi thực sự hay không, nhưng đó là cách tiện dụng để giải mã mã lỗi Win32.

+1

Vô cùng tiện dụng! Thật là một mẹo tuyệt vời; bạn học một cái gì đó mới hàng ngày trong khi lướt tràn ngăn xếp. – nocarrier

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