2012-08-17 26 views
16

Tôi muốn xây dựng dự án c# (.csproj) từ dòng lệnh bằng cách sử dụng msbuild và muốn nhắm mục tiêu thời gian chạy .Net2.0.Ghi đè khung mục tiêu từ dòng lệnh

Tôi thấy rằng tập tin xml dự án có 2 tags quan tâm

<Project ToolsVersion="4.0" ... 

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> 

Tôi đã tự hỏi nếu

  • thể ToolsVersion 4,0 sản phẩm mã tương thích cho .Net2. 0 thời gian chạy?
  • Tôi có thể ghi đè thẻ khuôn khổ mục tiêu từ hồ sơ dự án thông qua dòng lệnh (không dòng /ToolsVersion lệnh switch đạt được điều này?

Tôi đặc biệt muốn đạt được điều này thông qua dòng lệnh và không sửa đổi hồ sơ dự án.

hiện nay tôi đang làm một cái gì đó như thế này

msbuild myproj.csproj /p:Configuration=Release 

Trả lời

15

Bạn cần các đối số dòng lệnh cho msbuild để làm cho công việc đó:

msbuild.exe MyProj.proj /p:TargetFrameworkVersion=v2.0;Configuration=Release /tv:3.5 

do đó ghi đè giá trị trong tệp proj cũng như Công cụ phân giải.

Để tìm hiểu mặc định phiên bản msbuild nào được sử dụng, hãy bắt đầu lời nhắc lệnh Visual Studio Command (được tìm thấy trong menu Bắt đầu> Microsoft Visual studio 2010> Công cụ Visual Studio) và nhập msbuild. Dòng đầu tiên của đầu ra sẽ tổ chức BuidEngineversion của bạn:

Microsoft (R) Xây dựng cơ bản 4.0.30319.1

Từ doc MSDN:

MSBuild sử dụng một bộ công cụ nhiệm vụ, mục tiêu và công cụ để xây dựng ứng dụng . Thông thường, một bộ công cụ MSBuild bao gồm một tệp tin microsoft.common.tasks, tệp microsoft.common.targets và các trình biên dịch như csc.exe và vbc.exe. Hầu hết các bộ công cụ có thể được sử dụng để ứng dụng biên dịch với nhiều hơn một phiên bản của .NET Framework và nhiều hơn một nền tảng hệ thống

Bạn cũng có thể kiểm tra môi trường vars cho một phiên bản của khuôn khổ này được cài đặt: set F từ Visual Studio Cửa sổ nhắc lệnh mang lại cho tôi kết quả này:

Framework35Version = v3.5
FrameworkDir = c: \ Windows \ Microsoft.NET \ Framework \
FrameworkDIR32 = c: \ Windows \ Microsoft.NET \ Khung work \
FrameworkVersion = v4.0.30319
FrameworkVersion32 = v4.0.30319

ToolSet Explanation
ToolSetVersion

+0

Nếu toolsversion được thiết lập đến 4,0 sẽ kết quả lắp ráp chạy trên runtime v2.0 ?? –

+0

Có nó sẽ, tv chỉ cho biết công cụ (mục tiêu/trình biên dịch, vv) msbuild được sử dụng để sản xuất lắp ráp cho khung được yêu cầu – rene

+0

Tôi thấy rằng tôi có nhiều msbuild.exe mỗi trong thư mục v2.0, v3.0 và v4 .0 cái nào là tốt nhất để sử dụng –

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