2013-02-18 29 views
0

我有一個VS 2010建模項目與層圖。我使用層圖來驗證一些程序集。請注意,由於我有一些構建約束,我添加了引用到建模項目的程序集,而不是項目引用。只要引用的程序集可以找到,這工作正常。當沒有找到程序集時,構建會通過,但會發出警告,指示未找到引用的程序集。這非常合理。但是,如果您希望在出現圖層驗證錯誤時構建失敗,則傳遞構建會給組件中的實現有效的錯誤印象。我的問題是,如何在沒有找到引用的程序集時使構建失敗。我嘗試了TreatWarningsAsErrors標籤,但沒有奏效。我不是MSBuild專家,但我認爲建模項目在這方面的工作方式稍有不同。如何在VS2010建模項目中使用缺少的引用程序集構建失敗?

在此先感謝您的答覆。

Fuat

+0

我最後寫一個MSBuild自定義任務,是以搜索路徑和引用的組件和檢查清單,如果他們都存在。如果任何程序集不存在,則任務將記錄一個錯誤並從Execute方法返回false。 – 2013-02-22 22:35:06

回答

0

你可以改變beforebuild目標有類似:

<Error Condition="!Exists('C:\Reference\Required.dll')" Text="Reference not found" /> 
+0

感謝您的回覆。我嘗試過類似的東西。但問題是我有多個引用dll,列表可能會更改。此外,這些DLL可以從幾個可能的位置解決。因此,Exists條件不起作用。我希望它有一個文件列表。 ResolveAssemblyReference目標執行所有工作,但只有在找不到程序集時纔會發出警告。我需要一個錯誤。 – 2013-02-18 20:08:49

+0

你可以通過參考項目組。那麼它的動態。使用%(Reference.FullPath) – 2013-02-18 21:11:47

+0

我也嘗試過。因爲有幾個位置可以找到引用的dll,所以項目文件不指定引用的位置。因此,%(Reference.FullPath)不會解析到正確的位置,而是解析到項目文件夾。即使引用的dll存在於這些位置之一中,我也會失敗,因爲%(Reference.FullPath)指向了某些錯誤。有沒有辦法通過組合搜索路徑和程序集名稱來創建列表?如果存在,那麼我可以使用Exists來搜索這樣的列表。 – 2013-02-18 21:43:45

相關問題