powershell
  • msbuild
  • 2012-03-08 27 views 6 likes 
    6

    Tôi cố gắng để vượt qua một qua biến đơn giản,Simple Powershell Msbuild với tham số không

    Không tham số

    msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU" 
    

    Hãy thử 1

    $buildOptions = '/p:Configuration=Debug /p:Platform="Any CPU"' 
    msbuild MySolution.sln + $buildOptions 
    

    -> gây MSB1008

    Thử 2

    $command = "msbuild MySolution.sln" + $buildOptions 
    Invoke-expression $command 
    

    -> nguyên nhân MSB1009

    Tôi đã thử các giải pháp trên this bài nhưng tôi nghĩ rằng đó là một lỗi khác nhau.

    Trả lời

    12

    Hãy thử một trong những:

    msbuild MySolution.sln $buildOptions 
    
    Start-Process msbuild -ArgumentList MySolution.sln,$buildOptions -NoNewWindow 
    

    Bằng cách này, có một tính năng mới trong PowerShell v3 chỉ cho loại tình huống này, bất cứ điều gì sau -% được xử lý như là, vì vậy bạn chỉ huy đang sẽ trông giống như:

    msbuild MySolution.sln --% /p:Configuration=Debug /p:Platform="Any CPU" 
    

    Xem bài này để biết thêm thông tin: http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/

    +0

    +1 cho -% trong Powershell v3 –

    1

    Bạn cần phải đặt một không gian nơi nào đó giữa MySolution.sln và danh sách tham số. Như bạn có nó, kết quả dòng lệnh trong

    msbuild MySolution.sln/p:Configuration=Debug /p:Platform="Any CPU" 
    

    Và MSBuild sẽ xem xét "MySolution.sln/p: Cấu hình = Debug" là tên của hồ sơ dự án/giải pháp, do đó dẫn đến MSB10009: Project file does not exist..

    Bạn cần phải chắc chắn rằng kết quả dòng lệnh là một cái gì đó như thế này (lưu ý không gian sau khi MySolution.sln:

    msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU"  
    

    Có rất nhiều cách để đảm bảo rằng việc sử dụng cú pháp Powershell, một trong số họ là:

    $buildOptions = '/p:Configuration=Debug /p:Platform="Any CPU"' 
        $command = "msbuild MySolution.sln " + $buildOptions # note the space before the closing quote. 
    
        Invoke-Expression $command 
    
    Các vấn đề liên quan