C#如何创建一个具有多个相同命名项目的解决方案?

Posted

技术标签:

【中文标题】C#如何创建一个具有多个相同命名项目的解决方案?【英文标题】:C# How to create a solution with more than one same named projects? 【发布时间】:2015-09-15 13:59:31 【问题描述】:

我得到了一个文件夹,其中包含许多子文件夹中的解决方案及其代码。每个解决方案都会构建一个 PrinterDriver.dll。我要做的是创建一个主解决方案,我可以将所有项目添加到其中,然后它们每次都会编译。

目前我不能这样做,当我将每个添加到主服务器时,我会收到一条警报,告诉我该名称的项目已经存在。最好的方法是什么?

【问题讨论】:

通过重命名或合并具有相同名称的项目文件,使所有项目名称唯一。 对每个项目使用相同的名称会让人感到困惑。如果解决方案具有不同的命名空间,我认为您可以使用相同命名的解决方案,但默认情况下,命名空间是解决方案的名称。正如琼斯波利斯所说,最好的做法是给它们起不同的名字。 将项目重命名为 Something.PrinterDriver、SomethingElse.PrinterDriver 等 您需要更多信息吗?有任何问题或疑虑吗? 【参考方案1】:

我敦促您不要创建包含具有相同名称的项目的主解决方案,这将导致一团糟...您将不得不更改程序集名称和命名空间,并且您发现您最终会得到数十个命名空间歧义错误。

所有项目...每次都会编译

如果目标只是一次编译所有项目,那么只需编写一个使用所有项目文件编译输出的 MSBUILD 脚本。

例如:Compiling a .vbproj or .csproj project file without Visual Studio


如果您确实想要一个主要的解决方案,则需要进行手术。一种方法是创建反映每个项目中每个类的方法签名的接口(或抽象类),并使用 IoC 根据目标加载不同的实现类。


警告:更改命名空间时要小心,而用唯一名称作为命名空间的前缀可能听起来很简单。您必须意识到影响,尤其是对其他项目引用的代码库(如 Printer.DLL)的影响。

【讨论】:

以上是关于C#如何创建一个具有多个相同命名项目的解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有多个子项目的 Visual Studio 中为 C# 解决方案设置通用值(抽象)?

c#里一个文件夹下可以添加多个命名空间和类名相同的类么

具有多个值的C#字典如何[重复]

这个命名空间冲突是由于 XAML 到 .NET 代码生成中的错误吗?

具有相同数据源的多个组合框 (C#)

具有相同命名空间但在不同程序集中的内部类?