多年来,我们通过在包含该项目所有源代码的目录中为每个平台创建项目,在这些平台之间共享我们的 C# 代码。当我们添加新平台时,如果包含的代码文件无法在新平台上编译,我们将创建代码文件的副本并对其进行修改,以便它可以在预期的平台上运行。
项目目录可能如下所示
Application.Base
Applications.Base.CF.csproj
Applications.Base.WPF.csproj
Applications.Base.Phone81.csproj
Properties
AssemblyInfo.cs
Src
WidgetWPF.cs
WidgetPhone81.cs
Widget.cs
现在我对 UWP 采用相同的方法,我遇到了这个问题。为 UWP 添加新项目时:
Application.Base
....
Applications.Base.UWP
Properties
AssemblyInfo.cs
DSI.Applications.Base.UWP.rd.xml
...
现在,当我转到我的 WPF 解决方案时,编译 Applications.Base.WPF 项目时出现错误(尽管 WPF 项目中没有包含 UWP 项目文件的事件):
您的项目没有引用“.NETFramework,Version=v4.6.1”框架。在 project.json 的“frameworks”部分添加对“.NETFramework,Version=v4.6.1”的引用,然后重新运行 NuGet 还原。DSI.Applications.Base
经过一些 A/B 测试,我发现我可以通过使用 nuget 删除 UWP 对 Microsoft.NETCore.UniversalWindowsPlatform 的引用来修复错误。当然,这破坏了 UWP 项目。根本没有 project.json 存在。
是否有一种解决方法可以让我们继续以这种方式共享代码?重构我们的共享项目以适应所有平台将是一个巨大的负担 - 有许多这样的共享项目 - 其中一些甚至共享到其他平台(我们的 ASP.Net 项目。)