2009-08-26 36 views
3

我們的印象是,設定一個解決方案的性能目標框架是將應用程序限制爲只使用框架或以下的功能的特定版本。但我們發現,有人可以添加一個引用並開始使用來自更高版本的框架的代碼,編譯器不會抱怨一點。既然我們想在將來避免這種情況,任何人都不知道如何檢測引用更高版本的東西?如果有人在我們的目標之上添加代碼,我需要失敗構建。我如何執行.NET框架

+0

恕我直言,該標誌只禁止語言(CLR)更高的框架,而不是庫.. – andyp 2009-11-01 02:04:30

回答

0

爲什麼你需要防止它,如果它的工作?只要你不使用任何新功能,我相信可以有「向前」兼容的DLL。

+1

的我們希望確保開發人員不會意外/不知不覺中添加使用的任何新功能特性。 – Alex 2009-08-26 20:43:13

+0

我希望編譯器能夠爲你解決這些問題。如果不是編譯器,那麼任何單元測試都會捕獲它。 – David 2009-08-26 21:35:57

1

假設你的目標.NET 2.0及以上...如果你檢測到System.Core程序或在您的項目中引用其他3.x的組件(例如WPF)引用您的構建可能會失敗。

UPDATE

您可以用每個.PROJ文件內部檢查開始:

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 

然後,<ItemGroup>標籤中:

<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
<Reference Include="System.Xml.Linq"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
<Reference Include="System.Data.DataSetExtensions"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 

這可能是一個自定義楠任務或者編寫你自己的解析器來查找這些節點並使構建失敗。

+0

你會如何檢測這些?我已經看過清單,proj文件等。而且,如果沒有每個dll的全局列表以及它是哪個版本,我都無法弄清楚如何最好地確定。好消息是我已經測試過VS 2010,它確實實施了這個,所以最好的選擇可能是等待2010年並立即升級。 – Alex 2009-11-03 13:04:50