2012-01-06 56 views
14

Tôi cần phải chạy MSBuild từ dòng lệnh bằng cách sử dụng Visual Studio Command Prompt (2010). Nó được sử dụng để làm việc tốt. Bây giờ khi tôi mở cửa sổ, tôi nhận được thông báo lỗi sau:Visual Studio Command Prompt cho " Common là bất ngờ tại thời điểm này"

\Common was unexpected at this time. 

Cố gắng chạy lệnh msbuild sau khi không thành công.

Tôi tự nhiên cho rằng đó là vấn đề với mục nhập không được xác nhận trong biến môi trường PATH của tôi, có thể từ cài đặt lừa đảo gần đây. Tôi đã kiểm tra điều đó, nhưng PATH dường như là kosher.

Đào vào hệ thống tệp, tôi phát hiện ra rằng tệp bó được chạy theo lời nhắc là C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ vcvars32.bat. Tôi đã chỉnh sửa bằng cách đặt trong các câu lệnh ECHO để theo dõi vị trí của lỗi. Điều đó dường như chỉ ra một lỗi ở dòng này:

@if not "%WindowsSdkDir%" == "" (

Nếu tôi xóa dấu ngoặc kép, lỗi khác: "Tệp không được mong đợi vào lúc này".

2 dòng tiếp theo sau này bây giờ là:

@echo 51 
@set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools;%WindowsSdkDir%bin;%PATH%" 

tôi cho rằng báo cáo kết quả thất bại là dòng thứ hai, nhưng echo tuyên bố không sản xuất bất kỳ sản lượng, vì vậy tôi không biết làm thế nào mà có thể đang xảy ra.

Tôi đang sử dụng phiên bản Windows 64 bit 7.

Tôi sẽ đánh giá cao bất kỳ trợ giúp nào.

+0

Vì bạn đang sử dụng các cửa sổ 64 bit, tôi đoán là bạn đang đề cập đến tệp dơi 64 bit 'C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ bin \ amd64 \ vcvarsamd64.bat' và không phải là 32 tập tin bit như bạn đã đề cập. Thật không may, tôi không có một máy 64 bit để kiểm tra! –

Trả lời

27

Xem chủ đề this.

Tôi đoán là PATH của bạn đã được sửa đổi gần đây và bây giờ có chứa một số đường dẫn thư mục có dấu ngoặc kép bên trong.

HTH

+3

Hoàn hảo! Cảm ơn. Tôi đã xóa các dấu ngoặc kép và nó hoạt động trở lại. Tôi đã không cố gắng mà dựa trên giả định rằng Windows vẫn cần các dấu ngoặc kép để ngăn chặn nó bị nhầm lẫn với không gian. Có vẻ như đó không phải là trường hợp nữa. Cảm ơn một lần nữa! – Richard

+0

@Richard niềm vui của tôi :) –

+1

Cảm ơn rất nhiều! Tôi lãng phí 2 ngày về điều này và không có gì giúp đỡ! Cuối cùng câu trả lời của bạn đến để giải cứu! Bạn Rock! –

0

tôi đã dấu ngoặc kép (") trong biến PATH gây ra này, sau khi tôi gỡ bỏ chúng nó bắt đầu làm việc.

3

Vấn đề của tôi là bên trong một nếu chặn rval của một biến chuyển nhượng (% PATH% trong trường hợp của tôi) chứa một dấu ngoặc đơn, ví dụ:

set var=foo) got ya 

if 1 == 2 (
    set var2=%var% 
) 

Hiển thị "đã nhận được bất ngờ vào lúc này."

tôi tìm thấy answ er tại đây: Batch file variable with spaces and parentheses. Đó là sử dụng cú pháp mở rộng của tập hợp. Ví dụ:

set "var2=%var%" 

Điều này không thêm dấu ngoặc kép và không ảnh hưởng đến kết quả được lưu trữ trong% var2%.

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