2012-08-17 42 views
-1

我需要在代碼中聲明覆蓋排除的屬性,問題是我有一個項目組,並且我希望將它創建到某處可以從中訪問所有的項目當我需要它,現在我有它的命名空間,因此它會更容易使用外,它像每一個項目宣佈:在我的所有項目中獲得可訪問的類的最佳方式

public class CoverageExcludeAttribute : Attribute 
{ 

} 

有沒有更好的方式來實現在這一目標它可以訪問我的項目組中的任何位置並僅聲明一次,而無需將其名稱空間(,例如通過使用全局名稱空間)添加到我使用屬性的每個文件?

謝謝

+1

你有沒有想過剛剛創建CustomCoverageExclusion類作爲一個單獨的cs文件或.dll,你可以在你的項目中引用..你可以添加爲內部的項目屬性看看設置 – MethodMan 2012-08-17 13:27:48

+1

-1'不不得不將其名稱空間添加到每個文件中,我使用?'中的屬性。 .NET故意要求通過using語句或通過完全限定名稱來導入命名空間。即使系統名稱空間默認情況下也不存在。要求.NET停止這樣的工作是徒勞的。 – 2012-08-17 13:37:29

+1

雖然我真的同意P.Brian.Mackey,但我認爲唯一的方法就是像DjKraze所說的那樣:創建一個類型爲ClassLibrary的新微項目,添加一個。使用Coverage(..)類的cs文件,並確保該類不在名稱空間塊內。建立,然後在其他項目的每一個做一個添加引用到你剛剛創建的微項目..對不起,幾乎沒有其他的選擇這樣的事情! – quetzalcoatl 2012-08-17 13:42:33

回答

1

雖然我實際上P.Brian.Mackey同意,我想做到這一點的唯一方法是完全一樣的DjKraze說:

創建類型ClassLibrary的新微型項目,添加單個的.cs使用文件您的Coverage(..)類並確保該類不在名稱空間塊內。然後建立它,併爲其他項目中的每一個做一個Add-Reference到你剛剛創建的微項目。這樣它肯定會工作,並且你將有一個方便的地方來放置任何進一步的「通用代碼」無處不在。

但是,每個項目都必須更新參考。這是最低要求 - 總而言之,如果你想使用任何東西而不是複製,它必須被引用。

對不起,幾乎沒有其他的選擇這樣的事情! 另一種方法是..呃,複製。您可以輕鬆設置一個簡單的預生成腳本,該腳本將複製給定的.cs文件到每個項目中,但將該文件「添加」到.csproj的構建列表有點困難,但仍可以使用某些Ruby或Python或朋友...

嗯..說,這可能是寫一個預先構建腳本自動注入一個微型項目的引用..但我不知道這是否值得去做。你有超過50-100個項目嗎?否則,很可能不值得..

-1

可以使用依賴注入 http://en.wikipedia.org/wiki/Dependency_injection

最流行的是:微軟團結,Ninject,NHibernate的,StructureMap,Autofac。

祝你好運!

+0

咦?對於編譯時[Attribute]?怎麼樣?! DI/IoC在這裏不會有幫助! – quetzalcoatl 2012-08-17 13:39:39

+1

對不起,我沒有注意到它是一個屬性:) – 2012-08-17 13:41:15

0

這只是如果你想在每個項目中定義的一些源代碼,適用於VS2010及以上

,但沒有一個項目引用,看看一些NuGet提供的功能,尤其是Source Code Transformations。當您將NuGet包添加到項目中時,這些允許將一些源代碼添加到項目中。

+0

謝謝...但即時通訊使用VS2008 – CloudyMarble 2012-08-17 14:30:44

+0

我應該看到,在您的標籤,對不起:( – Lukazoid 2012-08-17 14:32:23

相關問題