任务:在不同的项目中重用C#代码但没有项目引用(不需要额外的dll /引用只是因为一个小的实用程序类)。 有4个项目,其中一个包含实用程序类,目前由其他3个项目链接源代码。 问题:一旦其中一个项目开始引用其他项目(针对其他一些需求),编译器开始抱怨(显然)在这些项目中存在相同的类(具有相同的命名空间)。
除了将课程移到单独的项目或为每个项目制作4个课程副本并单独维护它们之外,还有其他解决方案吗?
我想知道有没有办法获取链接文件,以便文件中的类获得项目特定的唯一命名空间...
答案 0 :(得分:6)
我想知道有没有办法获取链接文件,以便文件中的类获得项目特定的唯一命名空间...
你可以使用预处理器指令:
#if PROJECT_FOO
namespace Foo
#elif PROJECT_BAR
namespace Bar
#elif PROJECT_BAZ
namespace Baz
#endif
...然后将文件链接到每个项目中,在项目属性中定义适当的符号。
但我会彻底推荐反对它。这太可怕了,而且当然不是C#的设计方式。
将其分解为一个单独的项目 - 无论如何,您必然会发现需要越来越多的代码。
答案 1 :(得分:-1)
问题:
“除了将课程移到单独的项目或为每个项目制作4个课程副本并单独维护它们之外,还有其他解决方案吗?”
简短的回答是:不,没有。或者至少,没有优雅的方式。
正确的方法确实是使其成为引用项目的一部分。但是你不必创建一个包含JUST该实用程序类的项目!相反,将它作为一个项目,包含尽可能少的依赖项的多个简单实用程序,并在您的解决方案中共享它。这种方式更简单,更清洁。