Tôi đang cố gắng để có được msbuild để thông tin phân tích mã đầu ra giống như nó trong VS. Tôi có một cấu hình cho dự án của tôi được gọi là "CodeAnalysis" trong VS được thiết lập để chạy phân tích mã về xây dựng (với ruleset tối thiểu). Dù sao điều này là làm việc tốt trong VS, nhưng khi tôi chạy msbuild từ dòng lệnh nó chỉ hiển thị các cảnh báo xây dựng cơ bản và nó không chạy phân tích mã cả. Có ai biết tại sao chuyện này xảy ra không?RunCodeAnalysis = true không hoạt động trong dấu nhắc lệnh (MSBuild)
Cấu hình trong tập tin dự án:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CodeAnalysis|AnyCPU'">
<OutputPath>bin\</OutputPath>
<CodeAnalysisRuleSet>C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\Rule Sets\MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>
dòng lệnh:
msbuild Solution.sln /p:Configuration=CodeAnalysis /t:Rebuild
Tôi cũng đã cố gắng:
msbuild Solution.sln /p:RunCodeAnalysis=true /t:Rebuild
chạy với ghi nhật ký mức chẩn đoán (/ fl /flp:v=diag;logfile=diag.log) và tìm kiếm lý do tại sao mục tiêu RunCodeAnalysis bị bỏ qua. Nó sẽ được chạy như một sự phụ thuộc của PrepareForRun được chạy như một sự phụ thuộc của CoreBuild. –
Kiểm tra xem thuộc tính $ (CodeAnalysisPath), $ (CodeAnalysisTargets) đã thiết lập và tham chiếu đường dẫn phân tích mã hợp lệ, về cơ bản chỉ cần in chúng ra bên trong một tập lệnh – sll
@BrianKretzler Cảm ơn bạn đã tìm mẹo. Có điều gì đặc biệt tôi nên tìm? Tôi tìm thấy những điều sau đây: CoreBuildDependsOn = PrepareForRun; PrepareForRunDependsOn = RunCodeAnalysis; Tôi cũng nhận thấy rằng tại hành động corebuild nó nói: Nhiệm vụ "CallTarget" bỏ qua, do điều kiện sai; ('$ (UnloadProjectsOnCompletion)' == 'true') được đánh giá là ('false' == 'true') ..... điều này có liên quan không? –