-1

我需要在我的代码中声明覆盖排除的属性,问题是我有一个项目组,我希望在需要时可以从所有项目访问它的地方创建它,现在我将它放在命名空间,所以它会更容易使用,它在每个项目中声明如下:

public class CoverageExcludeAttribute : Attribute
{

}

有没有更好的方法来实现这个目标,它可以在我的项目组中的任何地方访问并且只声明一次,而不必将其命名空间(例如通过使用全局命名空间)添加到我使用该属性的每个文件中?

谢谢

4

3 回答 3

1

虽然我实际上同意 P.Brian.Mackey 的观点,但我认为唯一的方法就是正如 DjKraze 所说:

创建一个新的 ClassLibrary 类型的微项目,添加一个包含 Coverage(..) 类的单个 .cs 文件,并确保该类不在命名空间块内。然后构建它,并为每个其他项目对您刚刚创建的那个微项目做一个添加引用。这样它肯定会工作,并且您将有一个方便的地方放置任何进一步的“通用代码”随处可用。

但是,每个项目都必须使用参考进行更新。这是最低要求 - 总而言之,如果您想使用任何东西而不是复制,则必须参考它。

抱歉,对于这种事情几乎没有其他选择!另一种方法是……呃,复制。您可以轻松设置一个简单的预构建脚本,将给定的 .cs 文件复制到您的每个项目,但是将文件“添加”到 .csproj 的构建列表有点困难,仍然可以使用一些 Ruby 或Python 或朋友...

嗯..说,可能可以编写一个预构建脚本来自动注入对微项目的引用..但我不知道这是否值得做。您有超过 50-100 个项目吗?否则,可能不值得..

于 2012-08-17T13:55:27.793 回答
0

这只适用于VS2010及以上

如果您想要在每个项目中定义一些源代码,但没有项目引用,请查看 NuGet 提供的一些功能,尤其是Source Code Transformations。这些允许在将 NuGet 包添加到项目时向项目中添加一些源代码。

于 2012-08-17T14:05:42.407 回答
-1

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

最流行的是:Microsoft Unity、Ninject、NHibernate、StructureMap、Autofac。

祝你好运!

于 2012-08-17T13:35:32.713 回答