我在 Visual Studio 中有一个相当大的 C# 项目解决方案。我想将其中一些项目移植到 MONO 中并在 MAC 上运行。当然有些东西不起作用,有些东西我不想移植,因为它们不适用于 MAC。
一种方法是解决方案和项目配置。这使我可以排除我不想构建的项目(不幸的是,Visual Studio 并没有让它很容易看到,但无论如何......)。
第二种可以与第一种协同工作的方法是使用预编译器指令,例如#if MONO,然后在那时做一些事情。这很好,但它会创建同一个程序集的多个版本。编译后如何区分两者?这是一个问题吗?
即使前两种方法有效,有时我也想要一个大型项目的一部分。我不想浏览 20 个左右的文件并输入 #if MONO 吗?我可以手动劫持项目文件,但在 Visual Studio 中没有任何可见性。除非他们卸载项目并打开 XML 并查看一下,否则团队中的任何其他人都无法知道发生了什么。这听起来很疯狂。更糟糕的是,有时项目引用了一些东西,我想排除 MONO 的引用。现在我必须编辑 csproj。
我可以拆分项目,但是如果在某个时候我想移植到另一个平台怎么办。哪个平台需要什么代码的交叉点会变得疯狂。更糟糕的是,我可以让项目引用这个大型项目,然后可能不得不拆分。这一切都有效,但它会导致项目重载,不是吗?
我找不到一个好的清洁解决方案。有小费吗?有没有我可以遵循的标准。如果 VS 对 csproj 文件的编辑有更多的可见性,这可能会起作用。
最佳答案
您还可以设置文件夹结构并将您的解决方案拆分为包含平台独立项目的通用解决方案和包含平台特定项目的平台特定解决方案。
因此,例如一个包含所有常见项目的 application.sln,为了论证,我们还有一个 iOS 和 Android 解决方案。
在特定于平台的解决方案中,您可以通过向特定于平台的项目添加例如带有额外公共(public)项目子文件夹的“[应用程序]”文件夹来引用公共(public)项目。依次添加所有需要的公共(public)文件作为链接。
上面的答案是您还可以的可能性之一:
关于.net - 为 .NET 跨平台开发组织 Visual Studio 项目和代码的行业标准方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992872/