2012-08-13 32 views

回答

6

使用VisualStudioVersion屬性。

+0

創建一個項目在VS2008與後'<導入項目= 「$(MSBuildToolsPath)\ Microsoft.CSharp.targets」/>'以下加入: <目標名稱= 「PrintVisualStudioInfo」> <消息文本=」 VisualStudioVersion:'$(VisualStudioVersion)'「/> PrintVisualStudioInfo; $(CompileDependsOn) 打開VS2008輸出達到正常。結果: 目標PrintVisualStudioInfo: VisualStudioVersion: '' 在VS2010結果: PrintVisualStudioInfo: VisualStudioVersion:'10 0.0' – WaffleSouffle 2012-08-15 09:12:00

6

由於評論沒有格式化,這裏的調查顯示fsimonazzi是正確的。 2008年,VisualStudioVersion未設置。在2010年(大概是)它是。

創建了一個項目在VS2008與<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />後,以下補充:

<Target Name="PrintVisualStudioInfo"> 
    <Message Text="VisualStudioVersion: '$(VisualStudioVersion)'" /> 
</Target> 
<PropertyGroup> 
    <CompileDependsOn> 
    PrintVisualStudioInfo; 
    $(CompileDependsOn) 
    </CompileDependsOn> 
</PropertyGroup> 

轉身VS2008輸出到正常。結果:

Target PrintVisualStudioInfo: 
    VisualStudioVersion: '' 

在VS2010結果:

PrintVisualStudioInfo: 
    VisualStudioVersion: '10.0' 
5

根據this post屬性存在開始與VS2012。它在.NET 4.5安裝時檢測到Microsoft.Common.targets文件(檢查原始.NET 4.0沒有定義屬性)。

相關問題