我在 Visual Studio 中有一个相当大的 C# 项目解决方案。我想将其中一些项目移植到 MONO 中并在 MAC 上运行。当然有些东西不起作用,有些东西我不想移植,因为它们不适用于 MAC。
一种方法是解决方案和项目配置。这使我可以排除我不想构建的项目(不幸的是,Visual Studio 并没有让它很容易看到,但无论如何......)。
第二种可以与第一种协同工作的方法是使用预编译器指令,例如#if MONO,然后在那时做一些事情。这很好,但它会创建同一个程序集的多个版本。编译后如何区分两者?这是一个问题吗?
即使前两种方法有效,有时我也想要一个大型项目的一部分。我不想浏览 20 个左右的文件并输入 #if MONO 吗?我可以手动劫持项目文件,但在 Visual Studio 中没有任何可见性。除非他们卸载项目并打开 XML 并查看一下,否则团队中的任何其他人都无法知道发生了什么。这听起来很疯狂。更糟糕的是,有时项目引用了一些东西,我想排除 MONO 的引用。现在我必须编辑 csproj。
我可以拆分项目,但是如果在某个时候我想移植到另一个平台怎么办。哪个平台需要什么代码的交叉点会变得疯狂。更糟糕的是,我可以让项目引用这个大型项目,然后可能不得不拆分。这一切都有效,但它会导致项目超载,不是吗?
我找不到一个好的清洁解决方案。有小费吗?有没有我可以遵循的标准。如果 VS 对 csproj 文件的编辑有更多的可见性,这可能会起作用。